SQL &

5 Cevap php

Ben sadece gerçekten sadece bir tablodaki satır sayısını almak isteyen kulüpler ise en etkili olan yöntem merak ediyveyaum.

$res = mysql_query("SELECT count(*) as `number` FROM `table1`");
$count = mysql_fetch_result($res,0,'number');

veya

$res = mysql_query("SELECT `ID` FROM `table1`");
$count = mysql_num_rows($res);

Herkes bu konuda herhangi bir iyi test yapılır?

5 Cevap

O ({[) 1 (]} aksine) döndürür önce mysql_query() php pcrocess içine MySQL tüm sonuç kayıtları aktarır. Bu tek başına mysql_num_rows () sürümü yavaş olur.

Ayrıca (MyISAM gibi) bazı motorlar için MySQL (*) tablonun endeksi isteği bir Count hizmet verebilir without hitting the actual data. A SELECT * FROM foo tam bir tablo tarama ve MySQL, diğer yandan sonuçların her tek bir veri kümesi okumak zorundadır.

Kesinlikle ilk. MySQL genellikle oldukça bütün tablo daha bir dizin bakarak bunu yapabilirsiniz ve MyISAM (varsayılan) kullanırsanız tablo tablo meta saklanır ve instantly iade edilecektir için, satır sayısı.

Sizin ikinci yöntem, belleğe tüm tabloyu okuyacak değil aynı zamanda müşteri satırları sayar önce ağ üzerinden istemciye gönderir. Son derece savurgan!

Sanırım count(1) daha hızlı olacaktır:

$res = mysql_query("SELECT count(1) as `number` FROM `table1`");
$count = mysql_fetch_result($res,0,'number');

Although haven't tried the proposed methods, the first makes database fetch all the records and count them in the database, the second makes database fetch a separate field for all the records and count the number of results on the server.
As a rule of thumb the less data you fetch for a particular record the less time it will take therefore I'd vote for updated first method (fetching constant for every record and counting the number of constants fetched).

Gerçekten herhangi bir test gerekli olduğunu düşünmüyorum.

SQL sorgusunda SAYISININ yapıyor

1) Sends only one row of data back the to client (instead of every row)

2) Lets SQL do the count for you which is likely always going to be faster then PHP.

Indeksi ve inodb ile Kont kullanarak çok fazla yavaş yapar, ama mysqli_num_rows ile kullandığınız zaman herhangi bir gecikme olmadan döndürür. Eğer http://ssajalandhar.org/generalinstruction-0-1-0.html yüklemek için ikinci kısmını alacağını değil de mysqli_num_rows sonucu kontrol edebilirsiniz. Benim için mysqli müthiş çalışıyor.