0

次のようなテーブル定義を持つ MYSQL DB があります。

CREATE TABLE `minute_data` (
  `date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `open` decimal(10,2) DEFAULT NULL,
  `high` decimal(10,2) DEFAULT NULL,
  `low` decimal(10,2) DEFAULT NULL,
  `close` decimal(10,2) DEFAULT NULL,
  `volume` decimal(10,2) DEFAULT NULL,
  `adj_close` varchar(45) DEFAULT NULL,
  `symbol` varchar(10) NOT NULL DEFAULT '',
  PRIMARY KEY (`symbol`,`date`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

株式市場からの 1 分間のデータ ポイントを保存します。主キーは、シンボル列と日付列の組み合わせです。このようにして、いつでも各シンボルに対して 1 つのデータ ポイントしかありません。

次のクエリに時間がかかりすぎて、終了するのを待つことさえできないのはなぜだろうと思っています。

test.minute_data から個別の日付を選択します。ここで、date >= "2013-01-01" 日付順 asc limit 100;

しかし、私はできるselect count(*) from minute_data;し、それは非常に迅速に終了します。

テーブルには 3 億 7,400 万行以上のデータがあり、私のデスクトップ コンピューターはスーパー コンピューターとはかけ離れています。

クエリでスピードアップを試みることができることを誰かが知っていますか? これほど大きな MySQL テーブルを使用するという希望をすべて放棄する必要がありますか??

どうもありがとう!

4

1 に答える 1