优化删除查询

时间:2015-09-19 13:03:27

标签: mysql sql-delete

我想知道是否有任何选项可以改进和优化我的查询。我正在为我们的员工导入计划数据,并且需要删除旧数据,当该数据存在于此代理和日期时。原因是,代理商可能每天都不存在(因为他们离开了公司)而且可能是,我们上传了更新的报告(最近的时间表更改)。

这就是我目前有这个问题的原因:

9/17/2015 9:11:00 AM
9/17/2015 9:12:00 AM
9/17/2015 9:13:00 AM
9/17/2015 9:14:00 AM
9/17/2015 9:15:00 AM
9/17/2015 9:16:00 AM
9/17/2015 9:17:00 AM
9/17/2015 9:18:00 AM

此组合适用于报告的每个代理以及报告中的每一天。我上传了一个创建了5780天/代理组合。此查询占用了我当前的小表,大约需要5分钟才能执行。

我想知道是否有人知道如何改进这件事。

1 个答案:

答案 0 :(得分:1)

如果您有这样的表:

create table t123
(   id int not null,
    date datetime not null,
    myThing varchar(10) not null 
);

之后您添加了这样的索引:

ALTER TABLE t123 ADD INDEX (id,date);   -- add an index after the fact

然后在表t123上删除与您类似的内容将会像我想象的那样快速执行。 然而它需要在整个过程中保持指数,这是需要考虑的因素。

所有索引更改都需要仔细权衡。更快访问的好处,代价是减慢插入/更新/删除的速度。

Fast Engine CreationAlter Table

的手册页