Bonjour
Je regarde actuellement des plans d'executions avec Management Studio, il me propose de creer des INDEX sans la clef primaire de la table es ce normal ?
Merci
Bonjour
Je regarde actuellement des plans d'executions avec Management Studio, il me propose de creer des INDEX sans la clef primaire de la table es ce normal ?
Merci
Bonjour,
La clef primaire est le plus souvent une colonne technique de type integer dénuée de sens.
C'est ce qui garantit sa stabilité d'une part et ses performances d'accès d'autre part.
Le fait d'avoir besoin d'index pour des recherches fréquentes sur des colonnes fonctionnelles est tout à fait légitime (en fonction des cardinalités), ce seront des index supplémentaires, le plus souvent non uniques.
ok mais dans SQL SERVER les CREATE INDEX proposé ne l'inclus pas ?
Par défaut seuls les index correspondant aux contraintes unique sont créés (et donc notamment l'index PK).
Les autres doivent être créés manuellement quand le besoin est avéré.
Il faut se souvenir que les index peuvent faciliter et accélérer les lectures quand ils sont pertinents et correspondent à des prédicats "sargables", mais qu'ils pénalisent toujours les mises à jour (delete, update, insert) et les servitudes (sauvegardes , réorg...).
C'est pourquoi il faut ne créer que les index utiles (non redondants, filtrants, correspondants à des effectifs significatifs...)
Non, ça c'est faux....
Un UPDATE, sauf s'il porte sur toute les lignes de la table, a besoin de se positionner sur les lignes à modifier... Sans index concernant le prédicat WHERE de l'UPDATE, la mise à jour nécessite un scan de table et sera donc beaucoup plus longue et donc moins performante. Idem pour un DELETE. Pour l'insert, cela na pas d'importance, car au moment de l'insert la ligne n'étant pas connue il n'y a aucune concurrence. Alors effectivement si cela dure plus longtemps, la gêne est minime, peu bloquante sauf pour les index uniques.
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/ * * * * *
Evidement : l'index permet d'atteindre plus facilement (si éligible) les lignes concernées par des update ou des delete, mais en contre partie, la maintenance de ces index lors de ces mêmes opérations a un coût, c'est ce que je voulais dire par "pénaliser".
Il faut donc bel et bien en tenir compte pour ne pas créer un index non éligible qui ne présentera pas ce gain de recherche (ni en lecture, ni lors de delete ou update), mais présentera bien cet inconvénient de maintenance, quoi qu'il arrive !
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