IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

SELECT sans order by


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 6
    Par défaut SELECT sans order by
    Bonjour,

    J'ai une bête question à vous soumettre

    Lorsqu'on exécute plusieurs fois un SELECT sans spéficier un ORDER BY, le résultat retourné est-il toujours "trié" dans le même ordre ?

    Si oui, en fonction de quoi ?

    Merci d'avance,

    Christophe

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Si vous ne spécifiez pas de clause ORDER BY, alors votre résultat sera ordonné suivant la clé primaire de votre table.
    En effet la création d'une contrainte de clé primaire sur une table entraîne la création d'un index cluster qui va ordonner (mais pas seulement cela ) les données contenues dans votre table

    A+

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 6
    Par défaut
    Merci pour la réponse.

    En effet, j'ai une primary key (un int autoincrement).

    Christophe

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 52
    Par défaut
    Citation Envoyé par creabel Voir le message
    Merci pour la réponse.

    En effet, j'ai une primary key (un int autoincrement).

    Christophe
    Bonjour,
    Lisez bien ce que vous dit elsuket. C'est uniquement le cas pour les clustered index.
    Cependant elsuket, ce n'est parceque vous avez une clé primaire que vous aurez un index ordonné.

    @+

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 6
    Par défaut
    Heu, je ne comprends plus alors.

    comment crée-t-on ce "clustered index" ?

    Christophe

  6. #6
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Cependant elsuket, ce n'est parceque vous avez une clé primaire que vous aurez un index ordonné.
    Au sens SQL c'est tout à fait vrai.
    En revanche, lorsqu'on spécifie une contrainte PRIMARY KEY pour une table, SQL Server garantit l'unicité des données en créant implicitement un index cluster pour la/les colonnes de clé primaire

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 017
    Billets dans le blog
    6
    Par défaut
    Si vous ne spécifiez pas de clause ORDER BY, alors votre résultat sera ordonné suivant la clé primaire de votre table.
    NON, NON et NON !

    En effet aucune garantie d'aucune sorte ne peut être apporté dans l'ordre des lignes dans le cas d'un SELECT sans ORDER BY.

    Lisez l'article que j'ai écrit à cet égard :
    http://blog.developpez.com/sqlpro?ti..._sont_des_ense

    En effet il peut utiliser indifféremment la lecture de tel ou tel index. De pus dans le cas de grandes tables, SQL Server commencera par vous livrer en premier les lignes des pages en mémoire tandis que le moteur de stockage montera les autres pages pour lecture. Dans ce cas, la lecture des lignes se fera dans un ordre totalement aléatoire.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 6
    Par défaut
    Merci SQLPro (et tous les autres).

    Donc, pour résumer, si je ne spécifie pas un ORDER BY, je n'ai aucune garantie quant au résultat retourné ...

  9. #9
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 017
    Billets dans le blog
    6
    Par défaut
    Il semble que vous ayez parfaitement compris....

    Petite question : a votre avis... pourquoi as ton pris le soin de rajouter une clause ORDER BY ?

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 6
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Il semble que vous ayez parfaitement compris....

    Petite question : a votre avis... pourquoi as ton pris le soin de rajouter une clause ORDER BY ?

    A +
    Je suis tout à fait d'accord mais dans mon cas, le fait d'un faire un ORDER BY semble assez coûteux en temps machine et très pénalisant ...

    Christophe

Discussions similaires

  1. SELECT sans les accents.
    Par macben dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/11/2005, 20h56
  2. SELECT DISTINCT ... ORDER BY
    Par amenis dans le forum PostgreSQL
    Réponses: 7
    Dernier message: 29/07/2005, 11h23
  3. Changer la police avec un select, sans recharger la page
    Par Netoman dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 30/12/2004, 19h07
  4. SELECT et ORDER BY
    Par orus8 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/07/2004, 14h45
  5. Selection sans critères pour un publipostage
    Par Johnjohn dans le forum Access
    Réponses: 23
    Dernier message: 17/06/2003, 12h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo