Bir sütun int türünde ise, select sorgu çalıştırmayı daha hızlı yapmak için dizine eklenmesi gerekiyor mu?mysql dizini
cevap
Muhtemelen evet,
- sürece tablo vardır çok az satır (< 1000)
- int sütun tablo büyük bir kısmı iade ediliyor
- zayıf seçicilik vardır (diyelim>% 1
Bu durumda, bir tablo taraması yine de daha mantıklı olabilir ve iyileştirici bunu yapmayı seçebilir. Çoğu durumda bir endekse sahip olmak çok zararlı değildir, ancak kesinlikle deneyin ve görmelisiniz (laboratuvarınızda, üretim benzeri bir veri setiyle üretim kalitesinde donanımlarda)
Evet öyle. Bir sütunun hangi veri türüne sahip olduğu önemli değildir. Bir dizin belirtmezseniz, mysql, bu sütunda bir değer ararken istediğiniz zaman tüm tabloyu taramak zorundadır.
Evet, herhangi bir sütundaki bir dizin, veri türünden bağımsız olarak sorguyu daha hızlı gerçekleştirebilir. Verilerin kendisi önemli olan şeydir - sistemde halihazırda sadece iki değer varsa bir endeks kullanılmasında bir nokta yoktur. Tablo istatistiklerini geçerli olması gerekiyor, ama gerçekten sorguya bağlı -
- bir dizin varlığı kullanılacağı temin etmez:
Ayrıca unutmayın.
- MySQL ayrıca her SELECT için yalnızca bir indekse izin verir ve endeksler için sınırlı bir alana sahiptir (limit dependent on engine).
+1: Ek bilgi :) – shamittomar
"MySQL ayrıca bir dizine de izin veriyor SELECT başına ve dizinler için sınırlı bir alan var "- Hayır ?! (Ya da sadece sizi yanlış anladım. Bunu belirten bir belge alıntılamak ister misiniz?) – yankee
@yankee: EXPLAIN planını görüntülediğinizde, MySQL sadece EXPLAIN öğesinin gördüğü her ifade için bir indeks kullanabilir. Örneğin bir alt sorgu ayrı bir SELECT olacaktır. –
Evet, dizinler üzerindeki tüm nokta, bunları primary key
aracılığıyla oluşturmanız veya dizin kılavuzunu ekleyerek oluşturmanızdır. Sütunun türü, sorgu hızıyla ilgili bir şey söylemez.
Evet, dizine eklenmelidir. Boolean olarak kullanıldıklarında, tinyint
sütunlarını endekslemek mantıklı değildir, çünkü bu dizin yeterince seçici olmayacaktır.
- 1. MySQL dizini IN’de yardımcı değil
- 2. Çok basit mysql sorgu dizini kullanmadı
- 3. mysql: neden sol dizini bir dizin kullanmıyor?
- 4. sqoop kütüphanesi dizini nerede?
- 5. MySQL
- 6. , bir değer dizini
- 7. Dizini kullanarak kopyalama sırasında dizini yeniden adlandırın.
- 8. Dizi dizini/dizini kullanarak dizinin sırasını değiştir
- 9. StreamWriter proje dizini ve alt dizini?
- 10. Dizini neden düşürmek onu oluşturuyor?
- 11. Sürüm dizini
- 12. App_Data dizini
- 13. dosya dizini
- 14. Sütun dizini
- 15. satır dizini
- 16. MySQL
- 17. MySQL böyle sorguya GİBİ basit mysql kullanıyorum
- 18. phalcon Dev Araçları - modeller dizini
- 19. Bir dosya dizini açılarak bir açma dizini kullanma
- 20. Android Studio Test Dizini Test Dizini olarak işaretle Kök
- 21. Kronometreden klonlanan yeniden adlandırma dizini Açılan küme dizini
- 22. alıyorum IIS toplama dizini
- 23. Git kaldırma dizini
- 24. Başvuru dizini Wix
- 25. Kıvılcım yinelemeli HDFS dizini
- 26. Laravel geçiş undefined dizini
- 27. JaCoCo: eksik sınıflar dizini
- 28. msdeploy dizini atla
- 29. Eklentinin dizini nasıl belirlenir
- 30. Güney Geçiş Dizini Değiştirme
Belki de şu ana kadar booleanda değilsiniz. bilgili. Örneğin. Şunlara bakın: http://stackoverflow.com/questions/10524651/is-there-any-performance-gain-in-indexing-a-boolean-field – dennis