J'ai une table avec des millions de lignes, dont une colonne DATE et une colonne TIME.Dans MySQL, puis-je créer un index sur une fonction TIMESTAMP?
La modification de la structure de la table n'est pas une option, bien que l'ajout d'un nouvel index soit possible.
Compte tenu de cette requête:
SELECT * FROM Table WHERE TIMESTAMP(Date, Time) BETWEEN 'X' AND 'Y';
Je index sur les colonnes date et heure, également un index sur les colonnes date et heure, mais lorsque j'utilise la fonction TIMESTAMP, la requête utilise aucun index.
La question est, puis-je faire un index qui utilise la fonction TIMESTAMP (pas le type de données). Si non, y a-t-il un moyen de changer la requête ci-dessus pour utiliser les index? J'essaie de garder la requête agréable et courte, et d'essayer d'éviter d'itérer sur chaque date si possible.
EDIT:
Ainsi, depuis MySQL ne supporte pas les indices d'expression, est-il un moyen que je peux changer cette requête pour utiliser la date ou l'index (date, heure)?
Etes-vous autorisé à faire l'inverse (convertir les horodatages constants en combinaisons (date, heure)? WHERE (Date, Heure)> = (Xdate, Xtime) ET (Date, Heure) <= (Ydate, Ytime) ' –
@ypercube, en ce qui concerne la recherche d'index, je ne pense pas que cette expression a un quelconque avantage par rapport à l'exemple' Date BETWEEN' que j'ai donné –