Mysql索引奇怪的行为

时间:2015-05-02 08:06:02

标签: mysql database indexing

我有一张超过200,000行的表格& 81列。我有31个索引。昨天我在一列上添加了一个新索引。现在,当我在where子句中单独使用该列时,结果非常快。但是只要我在不同索引列的where子句中添加另一个条件,查询就会变慢。例如,如果我有columsn c1,c2,c3,c4和索引,所有查询如:

select c1,c2 from table1 where c1=a and c2=b and c3 = d

非常快。但是当我在现有列c5上添加新索引时,查询如下:

select c5 from table1 where c5>a

很快,但只要我添加新的条件,如

select c5 from table1 where c5>a and c1=b

查询变慢。当我说慢时,它慢15-20倍。快速查询需要0.2秒,慢查询需要3-4秒。

非常需要帮助。谢谢

1 个答案:

答案 0 :(得分:0)

首先,您可以使用复合索引(多于1个字段的索引)

其次,您可以将查询计划检查为

EXPLAIN SELECT [...]

(当然用实际的选择陈述。)

如果可以显示

的输出
SHOW CREATE TABLE

以及慢查询的解释,我们可以弄清楚要做什么。