Evet, MySQL SİPARİŞ BY (belirli koşullar altında) sütunlarında bir dizin kullanabilir. Ancak, MySQL karışık ASC, DESC sıralaması ( SELECT * FROM foo ORDER BY bar ASC, pants DESC
) için bir dizin kullanamaz . Sorgunuzu ve CREATE TABLE ifadesini paylaşmak, sorunuzu daha özel olarak yanıtlamamıza yardımcı olur.
ORDER BY cümlelerinin nasıl optimize edileceğine dair ipuçları için:
http://dev.mysql.com/doc/refman/5.1/en/order-by-optimization.html
Düzenle 2012-01-21 08:53
SİPARİŞ BY içinde karışık ASC / DESC ile bir dizin kullanma hakkında benim ifadenin kaynağı hakkında sorular vardı. Gönderen Optimizasyon ORDER BY belgelerinde:
Bazı durumlarda, MySQL, ORDER BY'ı çözmek için dizin kullanamaz, ancak yine de WHERE deyimiyle eşleşen satırları bulmak için dizinler kullanır. Bu durumlar aşağıdakileri içerir:
...
ASC ve DESC'yi karıştırın:
SEÇİMİ * t1 SİPARİŞİNDEN key_part1 DESC, key_part2 ASC;
...
Ayrıca, DESC anahtar sözcüğü CREATE INDEX'te anlamsızdır
Bir index_col_name belirtimi ASC veya DESC ile bitebilir. Bu anahtar kelimelere, artan veya azalan endeks değeri depolamasını belirlemek için gelecekteki uzantılar için izin verilir. Şu anda, ayrıştırılmış ancak dikkate alınmamıştır; Endeks değerleri her zaman artan düzende saklanır.