MySQL优化-750万行

MySQL优化-750万行,mysql,select,optimization,large-data,Mysql,Select,Optimization,Large Data,我在MySQL中有一个包含750000行的表,我对查询的持续时间有问题。有谁能帮我提些建议,让它快点吗? 这个表叫做“出勤”。它在col movement_date、employee_id上有索引,我试图在一个表中创建两个col的索引。然而,下面的查询大约需要9秒,对我来说太慢了。有人给我一些建议吗?我需要用超过14个员工ID进行选择 SELECT * FROM attendance WHERE movement_date >= '2014-09-01 00:00:00' AND m

我在MySQL中有一个包含750000行的表,我对查询的持续时间有问题。有谁能帮我提些建议,让它快点吗? 这个表叫做“出勤”。它在col movement_date、employee_id上有索引,我试图在一个表中创建两个col的索引。然而,下面的查询大约需要9秒,对我来说太慢了。有人给我一些建议吗?我需要用超过14个员工ID进行选择

SELECT * 
FROM attendance 
WHERE movement_date >= '2014-09-01 00:00:00' 
AND movement_date <= '2014-10-01 23:59:59' 
AND employee_id IN (14 integer ids...);

为了提高结果的速度,您需要以这种方式更改sql语句

SELECT * 
FROM attendance 
WHERE movement_date >= '2014-09-01 00:00:00' 
AND movement_date <= '2014-10-01 23:59:59' 
AND employee_id IN(
                   SELECT  indexed_column_IDs
                   FROM    table2 ...
                   )
选择*
出席人数
其中日期>='2014-09-01 00:00:00'

和移动日期使用
explain
查看您需要索引的位置。将表定义添加到问题
show create table attention
将为您提供完整的定义。是的,看起来您有一个复合索引
FK\u movement\u date\u employee
,应该予以考虑。您能否删除索引
IDX\u employee\u id
,然后尝试查看您得到了什么。
SELECT * 
FROM attendance 
WHERE movement_date >= '2014-09-01 00:00:00' 
AND movement_date <= '2014-10-01 23:59:59' 
AND employee_id IN(
                   SELECT  indexed_column_IDs
                   FROM    table2 ...
                   )