編集:コメントをありがとうございます。私はあなたの提案のほとんどを試しましたが、役に立ちませんでした. Connector/J 5.1.26 を使用して、Matlab でこのクエリを実行していることを付け加える必要があります (以前に言及しなかったことをお詫びします)。結局、クエリを「直接」実行すると0.2秒かかるため、これが実行時間の増加の原因だと思います。ただし、Connector/J を使用してこれほど大きなパフォーマンス ヒットに遭遇したことはありません。この新しい情報を踏まえて、何か提案はありますか? これを以前に開示しなかったことをお詫びしますが、Connector/J でパフォーマンスへの影響を経験したことはありません。
mySQL に次のテーブルがあります ( CREATE
HeidiSQL から取得したコード):
CREATE TABLE `data` (
`PRIMARY` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`ID` VARCHAR(5) NULL DEFAULT NULL,
`DATE` DATE NULL DEFAULT NULL,
`PRICE` DECIMAL(14,4) NULL DEFAULT NULL,
`QUANT` INT(10) NULL DEFAULT NULL,
`TIME` TIME NULL DEFAULT NULL,
INDEX `DATE` (`DATE`),
INDEX `ID` (`SYMBOL`),
INDEX `PRICE` (`PRICE`),
INDEX `QUANT` (`SIZE`),
INDEX `TIME` (`TIME`),
PRIMARY KEY (`PRIMARY`)
)
約 360,000 行のデータが取り込まれます。
次のクエリは、実行に 10 秒以上かかります。
Select ID, DATE, PRICE, QUANT, TIME FROM database.data WHERE DATE
>= "2007-01-01" AND DATE <= "2010-12-31" ORDER BY ID, DATE, TIME ASC;
数百万行のテーブルが他にもあり、同様のクエリを実行するとほんの一瞬で済みます。これが非常に遅い原因は何なのかわかりません。アイデア/ヒントはありますか?
説明:
id = 1
select_type = SIMPLE
table = data
type = ALL
possible_keys = DATE
key = (NULL)
key_len = (NULL)
ref = (NULL)
rows = 361161
Extra = Using where; Using filesort