SORU
20 ŞUBAT 2011, Pazar


MySQL: en Hızlı satır sayısını saymak için bir yol

Satır sayısını saymak için hangi MySQL daha hızlı olması gerekir?

Bu:

SELECT COUNT(*) FROM ... WHERE ...

Ya da, alternatif:

SELECT 1 FROM ... WHERE ...

// and then count the results with a built-in function, e.g. in PHP mysql_num_rows()

İlk yöntem bu açıkça veritabanı bölge olduğu için daha hızlı olması gerektiğini düşünüyor ve veritabanı motoru böyle şeyler içten belirlerken daha hızlı herkesten daha olmalıdır.

CEVAP
20 ŞUBAT 2011, Pazar


Seni alır COUNT(*) sütun dizinleri sayarken, bu yüzden en iyi sonucu olacaktır. Mysql ileHali hazırdamotor aslında tüm satırlar tüm satırları saymak için deneyin her zaman say doensn mi satır sayısı saklar. (birincil anahtar sütunu bağlı olarak)

Satır sayısı için PHP kullanarak mysql veri php için göndermek zorunda, çünkü çok akıllı değildir. Neden mysql tarafında aynı şeyi elde edebilirsiniz ne zaman?

Eğer COUNT(*) yavaş ise, sorguyu EXPLAIN Çalıştır ve dizinler çok kullanılan ve nereye eklenmesi gerektiğini kontrol etmelisiniz.


Aşağıdaki değilen hızlıama bir dava, COUNT(*) gerçekten uymuyor yerde sonuçları gruplandırma Başlat COUNT gerçekten tüm satırları sayılmaz sorun içine çalıştırabilirsiniz.

Çözüm SQL_CALC_FOUND_ROWS. Bu genellikle satır seçmek için kullanılır ama hala toplam satır sayısı (disk belleği için örneğin,) bilmek gerekir. Veri satır seçtiğinizde, sadece SEÇİN sonra SQL_CALC_FOUND_ROWS anahtar kelime ekleyin:

SELECT SQL_CALC_FOUND_ROWS [needed fields or *] FROM table LIMIT 20 OFFSET 0;

Gerekli satırları seçtikten sonra, bu tek Sorgu ile Kont alabilirsiniz:

SELECT FOUND_ROWS();

FOUND_ROWS() hemen sorgu verileri seçtikten sonra " olması gerekiyor.


Sonuç olarak, her şeyin aslında ne kadar ve NEREDE deyiminde ne kadar gelir. Gerçekten çok sayıda satır (on binlerce, milyonlarca, ve yukarı) olduğunda kullanılan dizin nasıl dikkat etmelidir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Abe Olandres

    Abe Olandres

    16 EYLÜL 2006
  • DudeFromUkraine

    DudeFromUkra

    7 Ocak 2008
  • Jared Busch

    Jared Busch

    25 Mayıs 2011