2009-11-08 31 views
17

Tabloda birincil alan 'id' olduğunu varsayarak (hız, vb.) Aşağıdaki sorgular arasında bir fark var mı? vsCOUNT (id) ile COUNT (*) MySQL içinde

SELECT COUNT(*) 
    FROM table 
+0

Bu konulara bakabilirsiniz http://stackoverflow.com/questions/1221559/count-vs-count1 http://stackoverflow.com/questions/433913/in-sql-is-there-a-difference- sayım ve sayım alanı adı http://stackoverflow.com/questions/59294/in-sql-whats-the-difference-between-countcolumn-and-count –

cevap

16

SELECT COUNT(id) 
    FROM table 

www.mysqlperformanceblog.com de Count(*) vs Count(col) göz at, onlar (vb indeksi, NULL veya olmasın DEĞİL) çeşitli 'sütun' türleri için bu konuyu tartışmak ve bu MyISAM ve InnoDB tabloları için.

2

Sorunun MySQL ile ilgili olduğunu biliyorum, ancak bunun değeri için Oracle için sayım (*) önerilir: bu, veritabanına özgü olduğunu gösterir (BalusC'den yukarıdaki yoruma bakın). Çok sayıda veritabanının (MS-SQL, MySQL) çeşitli meta veri türlerini barındıran bilgi şema tabloları bulunduğundan, bir sözdizimi sadece kolayca kullanılabilir bir değere bakıyorsa ve diğeri doğrudan tabloya giderse farklılıklar olmaya zorlanır. . Günün sonunda: farklı seçenekleri deneyin, EXPLAIN'ın size sahnelerin arkasında neler olduğunu anlattığını görün. Ename boş değil kısıtlaması olan bir sütun değildir ve mutlaka bazı null adlı sahip sayılmadığından değerleri olması nedeniyle

+1

Gittikçe daha fazla görünüyor ya da bir ORM kullanmak için (ve tüm vakalar için optimize etmesini umarız), ya da tam olarak * bir * veritabanı motoru için SQL yazmak ve geri kalanını unutun. –

0

Sayısı (*) Sayısı (Ename) fark çıkışları gösterebilir.

Yardım edin ..!