Bonjour,
Si j'ai une table avec 3 colonnes, quelle est la difference entre faire un index sur chaque colonne et un index sur les 3 en meme temps.
Au niveau des performances, quelle est l'impact ?
Merci pour vos conseils
Bonjour,
Si j'ai une table avec 3 colonnes, quelle est la difference entre faire un index sur chaque colonne et un index sur les 3 en meme temps.
Au niveau des performances, quelle est l'impact ?
Merci pour vos conseils
MCTS Microsoft.
La conception : Prendre le temps pour gagner du temps.
pas du tout la même chose....
Dans les index les informations sont triées relativement les unes aux autres.
Donc la recherches est efficace dans le sens du vecteur.
ainsi un index sur A, B, C sera efficace pour les recherches suivantes :
...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 = A, > A, < A = A AND = B, A AND < B, A AND > B, = A AND = B AND = C, = A AND = B AND < C, = A AND = B AND > C il ne sera pas efficace sur les recherches suivantes : = B, < B, > B = C, < C, > C = B AND = C, = B AND > C, = B AND < C = C AND > B, = C AND < B = B AND = C AND > A, = B AND = C AND < A,
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/ * * * * *
Je ne comprends pas trop, a quoi correspond A, par rapport à A.
En regle generale je mets un index sur toutes les clés primaire et secondaire est ce bien ?
Si j'ai une table utilisateurs avec comme champs Id, nom, prenom, age et que je dispose de plusieurs moteurs de recherche donnant la possibilité de chercher avec tous ces criteres, dois je indexer tous les champs + un index de toutes les colonnes ensemble ?
Merci pour tes conseils
MCTS Microsoft.
La conception : Prendre le temps pour gagner du temps.
Bonjour,
Indexer les clefs primaires est en effet une bonne pratique en général. Tellement que SQL Server le fait pour vous. n'auriez-vous pas créé des index redondants ?En regle generale je mets un index sur toutes les clés primaire et secondaire est ce bien ?
Quant aux clefs secondaires... ça peut aussi être utile mais parfois aussi contre performant...
Globalement, on pose des index pour supporter des requêtes : il faut connaitre les données, comment elles sont utilisées,... Notez toutefois que SQL Server peut vous donner un aperçu des indexes manquants
Enfin, en ce qui concerne votre moteur de recherche, là encore ça va dépendre de vos requêtes.
Si la requete est du style
Alors, un index sur (nom, prénom) sera utile.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT nom, prenom FROM utilisateur WHERE nom LIKE 'xxx%' AND prenom LIKE 'YYY%'
Il pourrait l'être moins si la requête est celle-ci, pourtant très proche
(il faudrait alors ajouter l'age en colonne incluse)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT nom, prenom, age FROM utilisateur WHERE nom LIKE 'xxx%' AND prenom LIKE 'YYY%'
Enfin, il sera inefficace sur cette requête :
On en arrive donc à la même conclusion : il est très difficile de poser les bons index sans connaitre précisément les requêtes qui sont exécutées, la structure des tables, et même leur contenu...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT nom, prenom, age FROM utilisateur WHERE nom LIKE '%xxx%' AND prenom LIKE '%YYY%'
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager