- ベストアンサー
MySQLのテーブルのデータ数のカウントの仕方
PHPとMySQLで、クエリーのselectを使わないで、 テーブル「test_T」の総データ数をカウントすることはできるのでしょうか。 ちなみに、 select * from test_Tをしてから、 mysql_num_rows()とすれば結果セットの行数はでるのですが、 selectで全データを出力するのはサーバに高負荷がかかる気がします。 select * の負荷は、データが多いと、やはりかかるのでしょうか。 以上、2点、よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
SELECT COUNT(*) FROM test_T; では、テーブルの中身を見に行きません。 テーブルを管理している情報を見に行きます。 explain SELECT COUNT(*) FROM test_T; としてみてください。 テーブルを使わないって、情報が出るはずです。 テーブルが、どんなに巨大になっても、一瞬です。
その他の回答 (4)
- yamadachan
- ベストアンサー率38% (18/47)
どのくらい違うかと言うのはfor文の中で何回かループさせてSELECT文実行を書いてみて実行時間を計ってみると差が明確になると思います。
- lx_lucifer_xl
- ベストアンサー率27% (3/11)
<?PHP // 接続 $handle = mysql_connect(......); // QUERY対象DBを選択 mysql_select_db('DB_NAME', $handle); // SQLの設定とQUERY $sql = "SELECT COUNT(*) as CNT FROM test_T"; $res = mysql_query($sql, $handle); $row = mysql_fetch_assoc($res); // DB切断 mysql_close($handle); // test_Tのレコード件数を表示 echo "件数:{$row['CNT']}"; ?> 連続スレ申し訳ございません。 間違いがありましたので、修正します。 echo "件数:{$row['cnt']}"; // × echo "件数:{$row['CNT']}"; // ○
- lx_lucifer_xl
- ベストアンサー率27% (3/11)
<?PHP // 接続 $handle = mysql_connect(......); // QUERY対象DBを選択 mysql_select_db('DB_NAME', $handle); // SQLの設定とQUERY $sql = "SELECT COUNT(*) as CNT FROM test_T"; $res = mysql_query($sql, $handle); $row = mysql_fetch_assoc($res); // DB切断 mysql_close($handle); // test_Tのレコード件数を表示 echo "件数:{$row['cnt']}"; ?> 上記の流れで取得してみてはいかがでしょう。
- yamadachan
- ベストアンサー率38% (18/47)
SELECT COUNT(*) FROM test_T で取得できます。
お礼
早速の回答、ありがとうございます。 SELECT COUNT(*) FROM test_Tで、できました! こんなシンプルな命令があったとは・・・。 ところで、 SELECT *をするのと、SELECT COUNT(*)では、 どのくらい負荷に違いがあるのでしょう?
お礼
早速の回答、ありがとうございます。 しかも、2回も答えていただけるなんて、ありがたいです。 SELECT COUNT(*) FROM test_Tで、できました! こんなシンプルな命令があったとは・・・。 ところで、 SELECT *をするのと、SELECT COUNT(*)では、 どのくらい負荷に違いがあるのでしょう?