La différence entre eux est la suivante. Supposons que vous ayez les colonnes A, B, C et que vous y insériez un index complexe dans exactement cet ordre. maintenant, quand vous faites
SELECT * from table where A = .. AND B = .. AND C =
alors l'index sera utilisé et c'est l'utilisation la plus efficace de cet index.
si vous avez requête
SELECT * from table where A = ..
alors l'index sera toujours utilisé. Cependant, la idnex ne sera pas (mis à jour grâce à des commentaires: ou seulement en partie pour 2 et 3 par exemple) peuvent être utilisés:
SELECT * from table where B ..
SELECT * from table where A = .. AND C = .. AND B = ..
SELECT * from table where A = .. AND C = ..
cependant à nouveau sera utilisé dans:
SELECT * from table where A = .. AND B = ..
espérons que cette aide. L'ordre est la clé ici. Et bien sûr ce dont vous avez besoin. Si vous avez trois requêtes comme
SELECT * ... where A
SELECT * ... where B
SELECT * ... where C
alors bien sûr faire 3 index sur une seule colonne. Cependant, si vous avez des requêtes avec ET, assurez-vous d'avoir le même ordre et ensuite faites 1 index pour 3 colonnes
Cela dépend de la façon dont vous les interrogez - toutes les colonnes à la fois, un sous-ensemble, individuellement seulement - et si les valeurs de chacun sont uniques ou répétées. – Rup
Je suis d'accord avec Rup. Les indices doivent toujours être construits en fonction des cas d'utilisation prévus. –