PHP bir mysql tablodaki toplam kayıtları almak için hızlı yolu

2 Cevap php

Aşağıda bir DB fotoğrafların toplam sayısını almak için kullandığınız geçerli kod sonuç sayısı sadece ben dosyaların klasör dengesi için içine yüklemek istiyorum hangi klasör numarası belirlemek için kullanılır gibi, tahmini sayı bile kabul edilebilir olacaktır.

Ben aşağıda kullanıyorum sonra daha iyi bir yolu yoktur bir duygu var?

$sql = 'SELECT auto_id FROM friend_user_photo';
$query = executeQuery($sql);
$rowcount = mysql_num_rows($query);

$ Rowcount friend_user_photo tablosunda kaydının numarasını verir

GÜNCELLEME:

Orada bir veritabanı hakkında bilgi almak için bir yol değildir. Bu yöntem yukarıda sonra kullanarak daha hızlı olabilir ya COUNT olabilir?

2 Cevap

Ayrıca SAYISININ kullanabilirsiniz.

$sql = 'SELECT COUNT(*) FROM friend_user_photo';
$query = executeQuery($sql);

Bu sonuçların sayısını içeren tek bir satır dönecektir. Bunu yapabilirsiniz Bu da normal bir toplama işlevi, alt sorgular, koşulları (), gruplama ve bütün bu iyi şeyler katılır.

Ayrıca, sadece başka bir alan bu tedavi edebilir, o yüzden diğer ad ve sonra katılır ve alt sorguları kullanabilirsiniz. Ayrıca, örneğin, ek veri seçebilirsiniz:

$sql = 'SELECT COUNT(*), name FROM table GROUP BY name

Bu isimler farklı bir listesini döndürür, ama aynı zamanda bu isimlerin her biri için mevcut kayıt numarasını içerir.

Edit for alternative to count()

Eğer COUNT (*) kullanmak istemiyorsanız siz de 'gösteri tablo durumunu kullanabilirsiniz. Örneğin:

$sql = "SHOW TABLE STATUS LIKE 'friend_user_photo'";
// Note, this LIKE is a regular LIKE, so wild cards can be used

Bu satırlar da dahil olmak üzere, çeşitli meta-veriler ile bir satır döndürür, ama aynı zamanda Key Length (bayt) ve veri uzunluğu (bayt) yanı sıra diğer verileri bir sürü dahil olacaktır. (Çok uzun tablo şu anda çalışmakta başka bir sorgu tarafından kilitli değil gibi) saymak gibi bir toplama işlevi (*) çalışan apposed sadece meta-veri çekerek beri bu genellikle oldukça hızlıdır.

Friend_user_photo SELECT COUNT (auto_id)

Daha doğrudan olacağını ve mysql_num_rows ($ sorgu) kullanmak zorunda değildir. Sadece $ sorgudan dönen değeri kontrol ediyorum.

EDIT: Eğer SAYISININ başka bir fikir istiyorum güncellendi beri.

Auto_id sadece bir tamsayı veya uzun, vb .. Eğer ki bir sonra nasıl LIMIT 1 ve artışlarla başladı:

SELECT auto_id FROM friend_user_photo LIMIT 0,1

Ben olsa daha hızlı eğer emin değilim ...

EDIT # 2:

Bu yazılara göre:

Eğer MyISAM kullanıyorsanız o COUNT hızlısı:

http://lists.mysql.com/mysql/184095 -

select count(*) from table is the fastest for myisam because it caches row count. This will also include any rows that have null values.

http://stackoverflow.com/questions/116824/whats-the-best-way-to-get-total-of-records-in-a-mysql-table-with-php