下記のMySQL のテーブルに大量にデータがはいっています。

select count(*) from このテーブル名
をかけて、2,3分経過しても、結果がかえってきません。
テーブルが壊れているのでしょうか? それともデータの入れ方によっては、
非常に時間がかかるテーブル構造になっているのでしょうか?

+-------------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+-------------+------+-----+---------+-------+
| a | text | NO | | | |
| b | text | NO | | | |
| c | text | NO | | | |
| d | text | NO | | | |
| e | smallint(6) | NO | | | |
| f | smallint(6) | YES | | NULL | |
| g | int(11) | NO | | | |
| h | varchar(4) | NO | | | |
| adate | date | YES | | NULL | |
+-------------------+-------------+------+-----+---------+-------+

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2008/02/05 11:55:41
  • 終了:2008/02/05 15:59:48

回答(2件)

id:bmax No.1

bmax回答回数67ベストアンサー獲得回数162008/02/05 13:38:43

ポイント35pt

テーブルにインデックスが無く、さらにcount(*)を使っているのが原因と思います。


Not Nullに設定されている列の中で値が一意になる列はあるでしょうか?

その列を主キーに設定し、Select Count(主キーに設定した列) From テーブル とすれば速くなると思います。


そのような列が無い場合、一意になるID列のようなものを追加して主キーに設定するといいと思います。


テーブルレイアウトの変更が不可で一意になる列もない場合、Not Nullの列(例えばフィールドa)にインデックスを張り、Select Count(フィールドa) From テーブル とすれば、パフォーマンスが改善されると思います。


http://q.hatena.ne.jp/1202180140

※URLはダミーです

id:isogaya

なるほど

2008/02/05 15:57:53
id:karuishi No.2

ニャンざぶろう回答回数765ベストアンサー獲得回数1282008/02/05 15:54:04

ポイント35pt

2~3分は長いですねえ。

(1)DBが排他アクセスに設定されていて、他からのアクセスでロックされていてタイムアウトになるまで待たされる。

(2.1)DBのあるファイルシステムの管理情報が壊れている(ディスクランプつきっぱなしorずっと点滅)

(2.2)DBのあるディスクがいかれかけていてずっとアクセスしている(ディスクランプつきっぱなし)

などの症状はありませんでしょうか。

http://q.hatena.ne.jp/1202180140

id:isogaya

アクセスロックの可能性ありですねえ。

夜ためしてみます。

2008/02/05 15:57:35

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません