編輯:謝謝大家的意見。我已經嘗試了大部分建議,但他們沒有幫助。我需要補充的是,我通過使用Connector/J 5.1.26(對不起,以前沒有提到過)通過Matlab來運行此查詢。最後,我認爲這是執行時間增加的原因,因爲當我「直接」運行查詢時,需要0.2秒。但是,使用Connector/J從未遇到如此巨大的性能提升。鑑於這些新的信息,你有什麼建議嗎?我很抱歉沒有透露過此事,但再次,我從未體驗過Connector/J的性能影響。MySQL表查詢異常緩慢(使用Matlab的連接器/ J)
我在MySQL的下表(從HeidiSQL採取CREATE
代碼):
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`)
)
它被填充有大約36萬行數據。
以下查詢需要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
請不要調用你的表「數據」或你的數據庫「數據庫」。它告訴讀者關於什麼是內在的。就好像你有一個盒子裏裝着東西,而你把它標記爲「重要」。使用描述性名稱。 –
有任何EXPLAIN輸出? –
所有保留字都有可能引發問題嗎?也許,在查詢中的'DATE'和'TIME'附近得到一些反引號。 – Buggabill