2011-07-14 18 views
14

Büyük bir tabloda toplam satır sayısını en verimli şekilde saymanın yolu nedir? Ben 23 milyon satırdan oluşan bir tablo var ve aşağıdaki sorgu üretim donanımına 30+ saniye sürer:MySQL: Büyük bir tabloda satır sayısını verimli bir şekilde nasıl sayarsınız?

select count(*) from tablename; 

O MySQL bir tablo taraması yapıyor olmalı gibi görünüyor, ancak gerekli olmalıdır böyle görünmüyor.

+0

bir birincil anahtar var mı? Masada hangi endeksler var? –

+0

@Jacob, Gerçekten önemli mi? InnoDb, varsa 23mi PK'ları veya dizinleri saymak zorunda kalacak. – Tocco

+0

Büyük olasılıkla bir dizin taraması yapıyor, ancak yine de yavaş olacaktır. –

cevap

3

InnoDB'de bir tablo satır sayısı yavaştır.

Diğer yandan MyISAM, satır sayısını, tablonun bir özelliği olarak alır ve bu da sorunuzu MyISAM üzerinde gerçekten hızlı yapar.

bir yaklaşım yeterliyse
+0

+1, bazen InnoDB onu kesmiyor: P –

+1

Bu, InnoDB'de ACID uyumluluğu için ödediğiniz fiyat. – Mchl

14

, şunları kullanabilirsiniz:

show table status like 'tablename' 
+0

FROM, LIKE :) değil – Karolis

+2

@Karolis: no. SHOW TABLE STATUS [veritabanından] [LIKE 'pattern'] 'dir. – wonk0

+0

@ wonk0 yeah. Haklısın. – Karolis

0

Kullanım önbellek sorgu SEÇ SQL_CACHE sayımı (column_name) tablodan

+0

Sorgu önbelleği, MySQL 5.7.20'den itibaren kullanımdan kaldırıldı ve MySQL 8.0'da kaldırıldı. – DidThis

İlgili konular