• ベストアンサー

MySQLのテーブルのデータ数のカウントの仕方

PHPとMySQLで、クエリーのselectを使わないで、 テーブル「test_T」の総データ数をカウントすることはできるのでしょうか。 ちなみに、 select * from test_Tをしてから、 mysql_num_rows()とすれば結果セットの行数はでるのですが、 selectで全データを出力するのはサーバに高負荷がかかる気がします。 select * の負荷は、データが多いと、やはりかかるのでしょうか。 以上、2点、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.5

SELECT COUNT(*) FROM test_T; では、テーブルの中身を見に行きません。 テーブルを管理している情報を見に行きます。 explain SELECT COUNT(*) FROM test_T; としてみてください。 テーブルを使わないって、情報が出るはずです。 テーブルが、どんなに巨大になっても、一瞬です。

その他の回答 (4)

回答No.4

どのくらい違うかと言うのはfor文の中で何回かループさせてSELECT文実行を書いてみて実行時間を計ってみると差が明確になると思います。

回答No.3

<?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']}"; // ○

hana_Z
質問者

お礼

早速の回答、ありがとうございます。 しかも、2回も答えていただけるなんて、ありがたいです。 SELECT COUNT(*) FROM test_Tで、できました! こんなシンプルな命令があったとは・・・。 ところで、 SELECT *をするのと、SELECT COUNT(*)では、 どのくらい負荷に違いがあるのでしょう?

回答No.2

<?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']}"; ?> 上記の流れで取得してみてはいかがでしょう。

回答No.1

SELECT COUNT(*) FROM test_T で取得できます。

hana_Z
質問者

お礼

早速の回答、ありがとうございます。 SELECT COUNT(*) FROM test_Tで、できました! こんなシンプルな命令があったとは・・・。 ところで、 SELECT *をするのと、SELECT COUNT(*)では、 どのくらい負荷に違いがあるのでしょう?

関連するQ&A