2009-06-19 21 views
7

誰もがそれをホインMySQLで優れてappraoch彼である私に言うことができますが、テーブルの行数を見つけることに来る:それはMySQLのテーブルの行数を取得していますか?

SELECT COUNT(*) FROM TABLE_NAME 

かのテーブルTABLEで行数を調べるための操作を行う方が良いですINFORMATION_SCHEMA

これはページのページ付け数を計算するために頻繁に使用されますか?

このテーブルには、たかだか数千の行しか追加されません。

おかげ

マーティン・オシェイ。 MyISAM

+0

数千の行については、select count(*)はほぼ即座に動作します。 – Hardwareguy

答えて

18

、このクエリ:それはテーブルのメタデータに保存されますので、

SELECT COUNT(*) 
FROM TABLE_NAME 

は、インスタントなので、このクエリを発行することはほぼ無料ですし、それが常に正しい結果を取得します。

InnoDBでは、このクエリでは行が1つずつカウントされ、時間がかかることがあります。

したがって、正確な値がCOUNT(*)である必要がない場合は、INFORMATION_SCHEMAを照会することができます。

+1

InnoDBテーブルでは、行数/ページ数を使ってページネーションを計算する必要があるので、INFORMATION_SCHEMAを使用することをお勧めします。計算には数ミリ秒かかりますが、複数のユーザーが同じテーブルにアクセスしてブラウズしている場合は、それでもオーバーヘッドです。 –

+0

@MartinOShea:正確に – Quassnoi

+0

ご協力ありがとうございます。 –

1

COUNT(*)が遅すぎると、私はSQL_CALC_FOUND_ROWSSELECT FOUND_ROWS()を使うことも考えています。

関連する問題