MySQL

MySQL sorgusunda LIMIT kullanırken toplam satır sayısını bulmak

06 Ağustos
15:29 2008

PHP ve MySQL ile veritabanı işlemlerine girdiğinizde bu tarz bir uygulama ile karşılaşacaksınız. Nerede derseniz de, en çok verileri sayfalama işlemlerinde elbet. Bu noktada, performans açısından öğrenmeniz gereken bir sorgu var. Çok işinize yarayacak. Buyurun bakalım :)

Normalde, MySQL sorgusundaki toplam satır sayısı nasıl bulunur?

Normal seviyedeki kullanıcılar bu işlemi alttaki sorgular ile gerçekleştirecektir.

[SQL]SELECT COUNT(*) FROM sehir WHERE sehir_ad LIKE ‘a%’;
SELECT sehir_ad, tel_kod FROM sehir WHERE sehir_ad LIKE ‘a%’ LIMIT 0,2;[/SQL]

Buradaki ilk sorgu ile koşulumuza uyan tüm şehir isimlerini bulduk. Hani sayfalama bölümü yapacağız ve bu sorguya uyan toplam veri adeti lazım, işte burada bulduk onu.

Sıra geldi listelemeye. Ancak hepsini değil, sadece ikişer ikişer listelemek istiyoruz. O nedenle ilk 2 veriyi aldık.

Genelde yukarıdaki mantıkla bu işlem yürütülür. Ancak ilk satırda toplam veri adetini bulmak için yaptığımız sorgu, sistemi yoracaktır. O nedenle alttaki yöntem performans açısından en güzeli 😉

Daha performanslı bir sorgu

Üstteki sorgumu alttaki gibi değiştiriyorum.

[SQL]SELECT SQL_CALC_FOUND_ROWS sehir_ad, tel_kod FROM sehir WHERE sehir_ad LIKE ‘a%’ LIMIT 0,2;
SELECT FOUND_ROWS();
[/SQL]

Bu kez ilk satırın başına SQL_CALC_FOUND_ROWS ekledim ve sorgu koşuluma uyan 2 satırı çektim. İkinci satırda ise özel bir sorgu yaptım. MySQL 4 sürümü ile birlikte gelen FOUND_ROWS kullandım. İlk sorgumuz yapılıyor ve sadece 2 adet veri çekiliyor. Ancak başına eklediğim SQL_CALC_FOUND_ROWS terimi sayesinde, bu koşula uyan toplam veri sayısı da hafızaya alınıyor. Hemen ardından yaptığım (ki bu önemli, önceki sorgudan hemen sonra yapılması gerekiyor) FOUND_ROWS sorgusu ile de hafızadaki toplam veri değerini aldım.

Etiketler

Benzer Yazılar

Yorumlar