2011-07-28 26 views
8

Sıralama, sıralama sütununda bir indeks varsa bir mysql dizini kullanıyor mu? Ayrıca endeks başka hangi şeyler için kullanılır?Mysql sıralamak için endeksi kullanıyor mu?

Sütunların birleşik ve ayrı dizinlerinde ne fark var?

+0

[Sipariş Üzerine Optimizasyon] (http://dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html) – Jacob

+0

İndeks kullanarak mysql cinsinden sıralamak, sütun üzerinde indeks eklemek olarak önemsiz değildir. sıralama için kullanılır. Okuma tarihi: https://www.percona.com/blog/2006/09/01/mysql-order-by-limit-performance-optimization/ http://dev.mysql.com/doc/refman /5.7/en/order-by-optimization.html Ayrıca mysql, sorgu başına 1 indeksi yalnızca indeksi akıllıca kullanabilir. –

cevap

19

Evet, MySQL, sıralı sütunlara göre sıralandığında bilgileri sıralamak için dizininizi kullanır.

Ayrıca, SELECT maddesine eklediğiniz tüm sütunlarda dizinler varsa, MySQL verileri tablodan değil, dizinden (daha hızlı) yüklemez.

kombine ve ayrı endeksler arasındaki fark MySQL sorgu başına birden bir endeksi kullanamazsınız, bu nedenle sorgu birçok sütunlara göre filtreler ve doğru endeksli istiyorum eğer, bir oluşturmanız gerekecektir tüm sütunların birleştirilmiş endeksi.

Ancak, tablolarınıza çok sayıda dizin eklemeden önce, her dizinin ekleme/güncelleştirme/silme işlemlerinin daha yavaş geçtiğini unutmayın.

Ayrıca yüksek gerçekten limite MySQL kullanmak mümkün bilmek derinlemesine bu konularda ve diğer ipuçları size ihtiyacı bir sürü tüm kapsayacak O'Reilly tarafından High Performance MySQL kitap öneriyoruz.

+0

Tüm sorularıma cevap verdiğiniz için teşekkürler .... 1 oylama ve size verilen cevap. – Anush

+1

mysql optimizer, sorguyu hızlandırırsa farklı dizinler birleştirir ve bu nedenle MySQL en az son sürümlerde, tek bir sorgu için birden çok dizin kullanabilir. – Kiran

1

Dizinler yalnızca sıralama için değil, SELECTING için kullanılır.

E.g. select * from mytable where id = 1, varsa sütunda bir dizin kullanır.

İlgili konular