使SELECT查询更快

时间:2014-03-17 14:08:48

标签: mysql sql performance select

我在MySQL中有一个查询:

SELECT FIELD1, FIELD2, FIELD3 
FROM TABLE1 
WHERE 
  (FIELD3 >= INT1 AND FIELD3 <= INT2) 
  AND FIELD2 IN (INTEGER_LIST)

如何更快地进行此查询? FIELD2和FIELD3都被索引。甚至,当删除FIELD2上的检查时,没有任何与性能相关的事情。

执行计划信息:

id: 1
select_type: SIMPLE
table: TABLE1
type: ref
possible_keys: FIELD2, FIELD3
key: FIELD2
ref: const
rows: 310000
Extra: using where

2 个答案:

答案 0 :(得分:0)

是。 table1(field2, field3, field1)上的索引应加快此查询的速度:

create index table1_field2_field3_field1 on table1(field2, field3, field1)

答案 1 :(得分:0)

您是否尝试在(FIELD3,FIELD2)上设置复合索引? (参见MySQL中最左边的前缀问题)

设置索引实际上取决于您期望的查询类型:

  • 可能在两个字段上 - 分别(FIELD2或FIELD3)
  • 总是按照这个顺序将这两个字段放在一起
  • 可以是(FIELD3。FIELD2)或(FIELD2,FIELD3)