2009-11-08 21 views
17

テーブルにプライマリフィールド 'id'があるとします(速度など)。MySQLのCOUNT(ID)とCOUNT(*)の比較

SELECT COUNT(id) 
    FROM table 

SELECT COUNT(*) 
    FROM table 
+0

これらのスレッドを見ることができます。http://stackoverflow.com/questions/1221559/count-vs-count1 http://stackoverflow.com/questions/433913/in-sql-is-there-a-difference-間-カウントと-countfieldname http://stackoverflow.com/questions/59294/in-sql-whats-the-difference-between-countcolumn-and-count –

答えて

16

がwww.mysqlperformanceblog.comでCount(*) vs Count(col)を見てください、彼らは(インデックスとNULLされていないか、など)様々な 'COL' のタイプについては、このトピックを議論し、これはMyISAMテーブルとInnoDBテーブルのためです。

2

は、私は質問は、MySQLについて知っているが、それは価値がある何のために、Oracleの推奨される(*)カウント:(BalusCから上記のコメントを参照)、これは、データベースの特定であることを示すことを行きます。多くのデータベース(MS-SQL、MySQL)にはさまざまなタイプのメタデータを保持する情報スキーマテーブルがあるため、ある構文ではすぐに利用可能な値を検索し、別の構文はテーブルにまっすぐ進んでいる。一日の終わりには、さまざまなオプションを試してみてください。EXPLAINが舞台裏で行っていることを教えてください。 ENAMEは と列NOT NULL制約ではありません、それは確実にカウントされていないいくつかのnull値 を持つことがあるため

+1

進むべき道であることをより多くの私には思えますORMを使用するか(すべてのケースで最適化したいと思っています)、まったく* one *データベースエンジンのためにSQLを書いて残りを忘れてしまいます。 –

0

COUNT(*) カウント(ENAME) は差分出力を表示することができます。

はそれが役に立てば幸い...!