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

  • ELawshea

    ELawshea

    26 Mayıs 2008
  • GoProTutorials

    GoProTutoria

    18 NİSAN 2011
  • jocc talking shit

    jocc talking

    6 NİSAN 2007