J'ai une requête avec une commande par clause qui utilise une colonne qui est la dernière colonne d'un index utilisé dans la clause WHERE, essentiellement de la forme:
SELECT
cols
FROM
tables
WHERE
col_1 = x
AND col_2 = y
AND col_3 = z
ORDER BY col_4
et l'index est créé sur les colonnes (COL_1, COL_2, COL_3, COL_4) dans cet ordre.
Lorsque je profile que la requête supérieure à 99% du temps est consacrée à l'état "Résultat de tri". Col_4 est une colonne d'horodatage si cela fait toute différence. Je comprends que l'ordre ne peut utiliser qu'un index dans certaines circonstances, mais je suis toujours un peu mystifié quant à précisément lorsque l'optimiseur le ferait.
Vous utilisez EXPLAIN
sur votre requête (explain select-or-whatever-your-query-is
).
possible_keys
montrer celles qui pourraient être utilisées, key
celui utilisé réellement.