みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

PHPとMySQLで、クエリーのselectを使わないで、
テーブル「test_T」の総データ数をカウントすることはできるのでしょうか。

ちなみに、
select * from test_Tをしてから、
mysql_num_rows()とすれば結果セットの行数はでるのですが、
selectで全データを出力するのはサーバに高負荷がかかる気がします。
select * の負荷は、データが多いと、やはりかかるのでしょうか。

以上、2点、よろしくお願いします。

投稿日時 - 2005-09-27 14:57:10

QNo.1676607

すぐに回答ほしいです

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

SELECT COUNT(*) FROM test_T;

では、テーブルの中身を見に行きません。
テーブルを管理している情報を見に行きます。

explain SELECT COUNT(*) FROM test_T;

としてみてください。
テーブルを使わないって、情報が出るはずです。

テーブルが、どんなに巨大になっても、一瞬です。

投稿日時 - 2005-09-28 15:52:36

このQ&Aは役に立ちましたか?

10人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.4

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

投稿日時 - 2005-09-28 06:47:06

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

投稿日時 - 2005-09-27 18:43:55

お礼

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

投稿日時 - 2005-09-27 23:04:25

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

?>

上記の流れで取得してみてはいかがでしょう。

投稿日時 - 2005-09-27 15:27:22

ANo.1

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

投稿日時 - 2005-09-27 15:16:44

お礼

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

投稿日時 - 2005-09-27 23:03:05

あなたにオススメの質問