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

 SGBD Discussion :

complexité d'une recherche ?


Sujet :

SGBD

  1. #1
    Membre averti Avatar de Ekinoks
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    687
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 687
    Points : 358
    Points
    358
    Par défaut complexité d'une recherche ?
    Salut !

    Si je me trompe pas, une base de donnée utilise des arbre de recherche équilibré et donc une recherche classique du type select * from table where id = 12 est de complexité ln(nombre_d_element_dans_table) ?

    Maintenant si on dit que "id" est un INDEX, es que cela reviens à avoir un tableau et insérer dans la "Neme" case du tableau les elements qui on "id" = N ? avec donc un temps de recherche constant ?

    Merci pour vos réponses.

  2. #2
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Si je me trompe pas, une base de donnée utilise des arbre de recherche équilibré et donc une recherche classique du type select * from table where id = 12 est de complexité ln(nombre_d_element_dans_table)
    Les bases de données n’utilisent pas d’arbres, par contre, les SGBD c’est généralement le cas, si on a défini des index organisés en arbres. Par exemple, avec DB2 for z/OS, les index sont organisés en arbres B+. Je ne sais pas ce que vous entendez par "complexité". En tout état de cause, si l’attribut Id est indexé et que le facteur de filtrage est optimal (l’attribut id étant par exemple clé primaire ou équivalent de la table concernée), si l'index n'est pas désorganisé, le nombre de lectures de pages du fichier sur lequel repose l’index est égal à la hauteur de l’arbre (nombre de niveaux d’index) + 1 (pour la page de données). Par exemple, telle table contenant 400 000 000 de lignes, pour laquelle on a 4 niveaux d’index, à 10 millisecondes la lecture, votre requête coûtera 50 millisecondes, à la louche.

    Toujours avec DB2, si la clé (Id) mesure 4 octets, Le 1er niveau d’index comportera 1 page, le 2e niveau 10 pages, le 3e niveau 2 900 pages et le 4e niveau 1 100 000 pages.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  3. #3
    Membre averti Avatar de Ekinoks
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    687
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 687
    Points : 358
    Points
    358
    Par défaut
    merci pour ta réponse fsmrel ! =)

    He... je ne voie pas bien ce que c'est le niveaux d'index mais cela veux dire que le temps d'exécution de la requête de dépend que du niveau de l'index et non pas du nombre d'élément ?

  4. #4
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    He... je ne voie pas bien ce que c'est le niveaux d'index mais cela veux dire que le temps d'exécution de la requête de dépend que du niveau de l'index et non pas du nombre d'élément ?
    Je ne vais pas m'embarquer dans un cours sur les arbres B (on doit trouver ça un peu partout), mais l'objet d'un index est l'accès aux pages de données en effectuant un minimum d'entrées/sorties. Clairement, s'il en faut en compter 5 dans l'exemple ci-dessus, sans index, c'est une autre chanson. Dans ce cas-là, si les pages sont de 4K, pour une ligne de données de 200 octets en moyenne et un taux de compression de 40%, le SGBD devra balayer au pire 14 000 000 de pages pour traiter le Select initial. Les lectures se feront par rafales disons de 64 pages : à 4 millisecondes par page, cela fait 14 000 000 / 4 millisecondes, ce qui laisse le temps de faire un tour au troquet du coin et de revenir dans un triste état... avant de lancer la requête suivante.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

Discussions similaires

  1. [index] performance sur une recherche descendante
    Par jean-jacques varvenne dans le forum Oracle
    Réponses: 16
    Dernier message: 15/01/2005, 10h22
  2. Optimisation d'une recherche et mise à jour
    Par gandf dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/01/2005, 18h38
  3. Réponses: 8
    Dernier message: 10/09/2004, 17h30
  4. [VB.NET] Quel objet tableau pour une recherche indexée ???
    Par Kitano dans le forum Windows Forms
    Réponses: 7
    Dernier message: 02/09/2004, 09h38
  5. Enlever la surbrillance lors d'une recherche avec vi
    Par sekiryou dans le forum Applications et environnements graphiques
    Réponses: 8
    Dernier message: 04/03/2004, 13h55

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