MySQLで、

下記の様なテーブルに3500万件以上レコードがあります。

前に一度SELECTが重くなり、インデックス付けました。
その時は早くなったのですがまた時間が経ち重くなってしまいました。。

原因として考えられることはなんでしょう?
またどんな対策が考えられますでしょうか?

レコード数でしょうか。。
プライマリがないからでしょうか。。

Field | Type | Null | Key | Default

xxx_date | datetime | YES | MUL | NULL
xxx_contentsid | int(11) | YES | MUL | NULL
xxx_banner | int(11) | YES | | NULL
xxx_lp | int(11) | YES | | NULL
xxx_viewedpref | tinyint(3) unsigned | YES | | NULL
xxx_viewedhall | smallint(6) | YES | | NULL
xxx_uid | varchar(50) | YES | MUL | NULL
xxx_carrier | varchar(5) | YES | | NULL
xxx_userstatus | tinyint(4) | YES | | NULL
xxx_sex | tinyint(4) | YES | | NULL
xxx_yob | tinyint(4) | YES | | NULL

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2014/04/22 12:36:08
  • 終了:2014/04/29 12:40:05

回答(1件)

id:sasada No.1

sasada回答回数1482ベストアンサー獲得回数1332014/04/23 11:11:59

MySQLでも、レコードが多くなるとキーがあふれて遅くなります。
Postgresqlのようにバキューム必須ではありませんが、mysqlcheck でデータベースの最適化はたまに行うとよいですよ。
# mysqlcheck -A -o -u root -p
とか。

  • id:standard_one
    多分レコード数だろうなぁ
    ヒストリカルテーブル作るなりサマリテーブル作るなりしたらいいんじゃないの?

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

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

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

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