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