mySQL tablomun dizini kullanmam dizini kullanmıyor ve nedenini bilmiyorum.Çok basit mysql sorgu dizini kullanmadı
CREATE TABLE IF NOT EXISTS `test` (
`a` int(11) NOT NULL,
`b` int(11) NOT NULL,
KEY `kk` (`a`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
ve bu:
bende
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE test ALL NULL NULL NULL NULL 10009 Using filesort
: Bu
EXPLAIN SELECT *
FROM test
USE INDEX (kk)
ORDER BY a
yanı sıra
EXPLAIN SELECT *
FROM test
ORDER BY a
bana bu verir
Bu dosya grubunu görmek istemiyorum ve tablomu sıralamak için anahtar kk tuşunu kullanın. Neyi yanlış yapıyorum?
Mesajlarınız için teşekkürler arkadaşlar, onlar sorumu yanıtlıyorlar! Ancak, şimdi "tablo taraması" ve "filesort" ile ne anlama geldiğini kastetmiyorum? Tüm alanları ve bir tablonun tüm satırlarını seçmeme rağmen, o tablonun O (n) dizinindeki iç ağacını (ve sonra tabloya bakarak) tek bir sütunla sıralamak daha hızlı değil mi? İstenen ekstra sütunları dosyaya, her satır için O (1) 'de => dizin dosyası her satırın fiziksel konumunu tablo dosyasında ya da?) indeksine dokunmadan tablo dosyasındaki O (n * log n) (potansiyel olarak) rastgele saklanan satırları hızlı bir şekilde sıralayarak? İndekslerin mySQL'de nasıl çalıştığına dair anlayışım yanlış. o tam tarama kullanmak daha verimli olmasını MySQL tahminleri -
Yani "tüm satırlar" 1), değil mi? –
@a_horse_with_no_name: Muhtemelen "tüm tabloyu" (veya "tüm satırları") kastediyorum. İngilizceyi doğru bir şekilde nasıl ifade ettiğinden emin değil. – zerkms
Evet, "tüm tablo" veya "tüm satırlar" daha iyi olurdu. –