Sorumluluk Reddi: Aşağıdaki her şey sadece anekdottur ve doğrudan kişisel deneyimlerimden alınmıştır. Ampirik açıdan daha titiz bir analiz yürütmek için kendini iyi hisseden herhangi biri bunu gerçekleştirebilir ve eğer ben olursam oyu reddedebilir. Ayrıca SQL'in bildirimsel bir dil olduğunu ve kodunuzu yazarken nasıl işlendiğini göz önünde bulundurmanız gerekmediğinin farkındayım, ancak zamanıma değer verdiğim için yapıyorum.
Mantıksal olarak eşdeğer sonsuz sayıda ifade vardır, ancak üç (ish) ele alacağım.
Durum 1: Standart sırayla iki Karşılaştırma (Değerlendirme sırası sabit)
A> = MinBound VE A <= MaxBound
Durum 2: Sözdizimsel şeker (Değerlendirme sırası yazar tarafından seçilmemiştir)
MinBound VE MaxBound ARASINDA
Durum 3: Eğitimli bir sırayla iki Karşılaştırma (Yazma zamanında seçilen değerlendirme sırası)
A> = MinBound VE A <= MaxBound
Veya
A <= MaxBound VE A> = MinBound
Tecrübelerime göre, Durum 1 ve Durum 2, veri kümelerinden habersiz oldukları için performans açısından tutarlı veya dikkate değer farklılıklar göstermemektedir.
Ancak, Durum 3, yürütme sürelerini büyük ölçüde iyileştirebilir. Spesifik olarak, büyük bir veri kümesiyle çalışıyorsanız ve A'nın MaxBound'dan daha büyük veya MinBound'dan daha düşük olup olmadığı konusunda biraz sezgisel bilgiye sahipseniz, Durum 3'ü kullanarak ve karşılaştırmaları sıralayarak yürütme sürelerini önemli ölçüde iyileştirebilirsiniz. buna göre.
Sahip olduğum bir kullanım örneği, belirli bir aralıktaki kayıtlar için dizine eklenmemiş tarihler içeren büyük bir tarihsel veri kümesini sorgulamaktır. Sorguyu yazarken, belirtilen aralıktan ÖNCE veya belirtilen aralıktan SONRA daha fazla veri olup olmadığı konusunda iyi bir fikre sahip olacağım ve karşılaştırmalarımı buna göre sıralayabilirim. Veri kümesinin boyutuna, sorgunun karmaşıklığına ve ilk karşılaştırmada filtrelenen kayıtların miktarına bağlı olarak yürütme süreleri yarı yarıya azaldı.