如果我有一個表, '身份證' 的主鍵,然後這兩個命令有不同的表現?
select count(*) from t;
select count(id) from t;
感謝
如果我有一個表, '身份證' 的主鍵,然後這兩個命令有不同的表現?
select count(*) from t;
select count(id) from t;
感謝
這些情況下,將具有相同的性能。在大多數數據庫中,count()會導致對錶或可用索引的掃描。它是否使用索引而不是表僅取決於查詢優化器。如果優化器足夠聰明以使用索引,則在兩種情況下都應該足夠聰明。
使用可用的元數據表,通常可以比使用count()查詢更有效地獲得表中的行數。
不,甲骨文接管並採取最快的方式在count(*)
我認爲如果id是主鍵Key(*)和count(id)在語義上是等價的。
但對於閱讀器count(id)
意味着計數所有行的id不爲空的意圖。爲了避免混淆,我寧願使用count(*)。
查詢優化器告訴你什麼? – 2012-06-04 17:49:13