Y aura-t-il un avantage réel à ce que je mette des index sur les champs de date qui seront principalement utilisés dans les requêtes utilisant des éléments tels que.
dateField < "var"
Et
"var" BETWEEN dateField1 AND dateField2
Les recherches se font beaucoup mais je ne fais jamais de comparaison directe "=" sur elles.
Réponses:
16 pour la réponse № 1Oui bien sûr. Les recherches par plage bénéficieront d'un index, tout autant que les recherches par égalité.
Citant du Manuel de référence MySQL :: Comment MySQL utilise les index:
Caractéristiques de l'indice B-Tree
Un index B-tree peut être utilisé pour les comparaisons de colonnesdans les expressions qui utilisent les opérateurs =,>,> =, <, <= ou BETWEEN. L'index peut également être utilisé pour les comparaisons LIKE si l'argument de LIKE est une chaîne constante qui ne commence pas par un caractère générique.
Dans certaines situations, l'optimiseur peut décider de ne pas utiliser l'index si la plage finit par être trop grande, car un balayage de table peut en réalité être plus rapide. Utilisation EXPLAIN
pour voir quels index (le cas échéant) seront utilisés dans votre requête.