Aynı sonuçlar ile 2 farklı şekilde ifade edilebilen bir sorgum var. Hangisi daha iyi - performans veya başka nedenlerle?Hangi mySQL tarih sorgusu daha iyi performans gösteriyor?
İlk sorgusu:
SELECT post_id FROM posts
WHERE post_date BETWEEN '2010-01-01 00:00:00' AND '2010-12-31 23:59:59'
İkinci sorgusu: önceden
SELECT post_id FROM posts
WHERE YEAR(post_date)=2010
teşekkürler.
Kıyaslama için öneriden sonra bazı araştırma ve testler yaptım. Testlerim bilgisayarımdaki bazı sorunlar nedeniyle kıyaslama değildi, ancak bana biraz fikir verdiler.
4000 sıralı masamı test ettim ve önemli bir fark yoktu. BETWEEN komutu, 0.09 toplam sorgu zamanında YEAR (post_date) 'den sadece 0.01-0.02 sn daha fazlaydı. YEAR kullanıyor (post_date) hem performans hem de kullanılabilirlik için iyi olurdu.
Ve öğrenirken; saat veya dakika kadar önemli değilse, ARASINDA böyle kullanılabilir:
http://dev.mysql.com/tech-resources/articles/using-new-query-profiler.html
doğru olması için:
SELECT post_id FROM posts
WHERE post_date BETWEEN '2010-01-01' AND '2010-12-31'
neden kendiniz kıyaslamıyorsunuz? – dbemerlin
Caveat: 'BETWEEN '2010-01-01' VE '2010-12-31' 'bir şeyler yapıyor * biraz * şaşırtıcı: Son gününü içermiyor, çünkü içeride" BETWEEN "için genişletildi 2010-01-01 00 : 00: 00 'VE' 2010-12-31 00: 00: 00 '' – Piskvor
@dbemerlin: Çünkü o zaman diğerleri (benim gibi) başkalarının cevaplarını ve sonuçlarını görebilirler. –