gpt4 book ai didi

MySQL 优化 - 7.5m 行

转载 作者:行者123 更新时间:2023-11-29 02:59:05 25 4
gpt4 key购买 nike

我在 MySQL 中有一个表,其中包含 7,500,000 行,我对查询持续时间有疑问。任何人都可以帮我提供一些技巧以使其更快吗?表称为“考勤”。它在 col movement_date、employee_id 上有索引,我试图在两个 cols 上创建索引。但是下面的查询大约需要 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...);

表定义:

CREATE TABLE `attendance` (
`attendance_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`attendance_raw_id` int(10) unsigned DEFAULT NULL,
`employee_id` int(11) NOT NULL,
`shift_type_id` int(11) DEFAULT NULL,
`shift_plan_id` int(11) DEFAULT NULL,
`record_status_id` tinyint(4) DEFAULT ''1'',
`movement_date` datetime DEFAULT NULL,
`attendance_movement_type_id` tinyint(4) DEFAULT NULL,
`note` varchar(50) DEFAULT NULL,
`created_d` datetime DEFAULT NULL,
`created_w` int(11) DEFAULT NULL,
`updated_w` int(11) DEFAULT NULL,
PRIMARY KEY (`attendance_id`),
UNIQUE KEY `IDX_attendance_raw_id` (`attendance_raw_id`),
KEY `IDX_employee_id` (`employee_id`),
KEY `FK_attendance3` (`attendance_movement_type_id`),
KEY `IDX_movement_date` (`movement_date`),
KEY `FK_attendance4` (`record_status_id`),
KEY `FK_movement_date_employee` (`movement_date`,`employee_id`),
CONSTRAINT `FK_attendance` FOREIGN KEY (`employee_id`) REFERENCES `employee` (`employee_id`),
CONSTRAINT `FK_attendance2` FOREIGN KEY (`attendance_raw_id`) REFERENCES `attendance_raw` (`attendance_raw_id`),
CONSTRAINT `FK_attendance3` FOREIGN KEY (`attendance_movement_type_id`) REFERENCES `attendance_movement_type` (`attendance_movement_type_id`),
CONSTRAINT `FK_attendance4` FOREIGN KEY (`record_status_id`) REFERENCES `record_status` (`record_status_id`)
) ENGINE=InnoDB AUTO_INCREMENT=9072724 DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC

最佳答案

为了提高结果的速度,你需要这样改变你的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 ...
)

从一定数量的记录开始,对 SELECT 的 IN 谓词变得比对常量列表更快。

关于MySQL 优化 - 7.5m 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26669505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com