加速:DOUBLE上的SELECT语句

时间:2015-02-23 13:47:10

标签: mysql performance select optimization double

我有一个巨大的MySQL数据库表(InnoDB),有大约45,000,000个条目。它包含包含三列X,Y和SCORE的相似性数据。 (含义:X与Y比较的相似度得分为0.562。)

现在我想选择X和SCORE> 0.8。

SELECT * FROM tableFOO WHERE X = x AND SCORE > 0.8;

但这种方法需要很长时间(约20秒)。

有没有办法在DOUBLE值上更有效地选择?

2 个答案:

答案 0 :(得分:1)

在X和SCORES上创建索引:

CREATE INDEX idx_x ON tableFOO(X);
CREATE INDEX idx_score ON tableFOO(SCORE);

(感谢Jon Skeet的评论)

答案 1 :(得分:0)

单独的指数是不够的;你需要一个“复合”指数: INDEX(X, Score)。 (我假设在WHERE X = x中,x是常量。)

检查EXPLAIN中的Key_len以了解我的意思。