Nedir php ile mysql tablodaki kayıtların toplam # almak için en iyi yolu nedir?

8 Cevap php

Nedir büyük bir tabloya kayıtların toplam sayısını seçerek en etkili yolu? Şu anda, Im basitçe yapıyor

$result = mysql_query("SELECT id FROM table");
$total = mysql_num_rows($result)

Eğer tablodaki kayıtları bir sürü varsa ben, bu çok verimli ya da hızlı değildi söylendi.

8 Cevap

Doğru söylendi. mysql çok daha verimli olduğu için bu sayıyı yapabilirsiniz.

$result = mysql_query( "select count(id) as num_rows from table" );
$row = mysql_fetch_object( $result );
$total = $row->num_rows;

Sen kullanmanız gerekir SQL's built in COUNT function:

$result = mysql_query("SELECT COUNT(id) FROM table");

MyISAM tabloları zaten satır sayısı depolamak, yani bir MyISAM tablo üzerinde "FROM tablo SELECT COUNT (*)", sadece bu değeri okur. Bu tablo veya index (es) taraması yapmaz. Yani, bu sadece hızlı veya farklı bir tablodan değerini okuyarak daha hızlı.

Eğer (kullanılan tabloların en olağan türü olan) bir MyISAM tablo kullanarak eğer göre MySQL documentation bu en verimli:

$ Result = mysql_query ("FROM tablo COUNT (*) SEÇ");

Aksi takdirde Wayne belirtildiği gibi yapmak ve sayılan sütun endeksli olduğundan emin olmalıdır.

Ben yerleşik işlevleri kullanmak için kabul olsa da, ben gerçekten mysql_num_rows ve sayımı (id) arasındaki herhangi bir performans farkı görmüyorum. 25000 sonuçlar için, aynı performansı (kesin diyebilirim.) Sadece kayıt için.

Ne bu böyle bir şey:

$result = mysql_query("SELECT COUNT(id) AS total_things from table");
$row = mysql_fetch_array($result,MYSQL_ASSOC);
$num_results = $row["total_things"];

Can I just add, that the most "efficient" way of getting the total number of records, particularly in a large table, is to save the total amount as a number in another table. That way, you don't have to query the entire table everytime you want to get the total.

Ancak, bir satır silinir / ilave edildiğinde bu sayıyı artırmak veya azaltmak için veritabanında bazı kod veya Tetikleyiciler'i kurmak zorunda olacak.

Web sitenizin büyürse yüzden onun en kolay yolu, ancak, kesinlikle bunu yaparken düşünmelisiniz.

Sadece ben onun verimliliği konuşamıyor ama o SHOW TABLE STATUS bir Rows sütun döner, unutmayın istedim. Bazı hafif Googling iki yıl önce MySQL 4 yavaşlık raporları ortaya çıkıyor. Ilginç bir zaman denemeleri için yapmak olabilir.

Ayrıca yanlış sayımı ile ilgili InnoDB caveat unutmayın.