2009-12-12 9 views

答えて

149
SELECT COUNT(*) FROM fooTable; 

は、テーブルの行数をカウントします。

reference manualを参照してください。単に

+6

*の代わりにインデックス付き列の名前を使用すると、それ以上の高速化はありますか? このように:SELECT COUNT(ID)FROM 'tablename' –

+1

わずかです。私は21961904の行テーブルを持っていました。そのテーブルは115秒で照会されましたが、IDを使用するのに107秒かかりました。 – NargothBond

+1

COUNT(\ *)は厳密な言語定義です。 COUNT(\ *)を試してみると解析エラーが出る – ppostma1

5

SELECT COUNT(*) FROM `tablename` 
4
select count(*) from YourTable 
16

私たちが出て、そのテーブルにSELECTクエリを実行すると、テーブルの行数を見つけるために他の方法を持っています。

すべてのmysqlインスタンスには、information_schemaデータベースがあります。次のクエリを実行すると、そのテーブルのに近い番号のを含むテーブルの詳細が表示されます。

select * from information_schema.TABLES where table_name = 'table_name'\G 
+0

MyISAMが行数を格納しているので、これはMyISAMテーブルでも高速ですか? – NaturalBornCamper

+0

私はこれをMyISAMでテストしたことがありません。 –

1
$sql="SELECT count(*) as toplam FROM wp_postmeta WHERE meta_key='ICERIK' AND post_id=".$id; 
$total = 0; 
$sqls = mysql_query($sql,$conn); 
if ($sqls) { 
    $total = mysql_result($sqls, 0); 
}; 
echo "Total:".$total;` 
32

誰もそれを言及していないので:各テーブルの推定行を含む

show table status; 

リストいくつかの追加情報とともにすべてのテーブルを、。これはphpMyAdminがデータベースページに使用しているものです。

この情報はMySQL 4で利用できます。これはおそらくMySQL 3.23以前の情報スキーマデータベースにもあります。

UPDATE

ダウン投票があったので、私が示した数だけのInnoDBとTokuDBのために推定し、それがMyISAMテーブルとアリア(マリア)のストレージエンジンのために絶対的に正しいとされていることを明確にしたいです。

select count(*) from table; 

完全なテーブルが大きい高負荷サーバに時間がかかる場合があります非常に高価な操作何ができるかをスキャン操作:クエリなどがあるため

また、これは、MySQLの上の行数を確認する最速の方法です。また、ディスクI/Oも増加します。

同じ操作で挿入と更新のためにテーブルがブロックされる可能性があります。これはエキゾチックストレージエンジンでのみ発生します。

InnoDBとTokuDBはテーブルロックでは正常ですが、フルテーブルスキャンが必要です。

+2

これは、行を数える最も効率的な方法のように見えます。なぜそれは答えではないのだろうか?私はInnoDBを使用しています。テーブルロックを使用すると、行の数は正確ですか? innodbのための –

+0

は**推定されています**。 「ウェブサイトにはxxxメンバーがあります」、「xxxの結果があなたのものと似ています」などのような場合に使用することができます。 – Nick

+0

わかりません。しかし、Innodbは実際の数ではありません。しかし、100万行のテーブルには非常に便利です。 – Nick

2

あなたは()ここで 指定された基準

select count(*) from table_name; 
-3

と一致した特殊なケースである行の数を返し、カウントを使用する必要があります。テーブルからデータを削除しない場合は、auto_incrementidカラムを使用してローの数をカウントするだけです。このテーブルにデータを挿入するときにidが手動で設定されていないことを確認してください。この操作には数ミリ秒かかります。

+1

これは本当に避けなければならない、それはいつかあなたを迎えに来るでしょう.. – AndrewMcLagan

+0

決してクルージを使用しないでください –

関連する問題