Mysql 删除的运行时间比选择的长
下面的DELETE查询的运行时间比同一个SELECT语句长得多。为了进行比较,SELECT查询运行1分钟,DELETE查询运行5分钟以上,实际超时。为什么会发生这种情况?我如何防止这种情况 选择查询1分钟 删除查询5分钟以上Mysql 删除的运行时间比选择的长,mysql,sql,Mysql,Sql,下面的DELETE查询的运行时间比同一个SELECT语句长得多。为了进行比较,SELECT查询运行1分钟,DELETE查询运行5分钟以上,实际超时。为什么会发生这种情况?我如何防止这种情况 选择查询1分钟 删除查询5分钟以上 改进:您可能希望在编程语言中将查询更改为calculatedate=Now-7天,而不是在查询本身中进行计算 删除需要更多的时间:删除通常需要更多的时间,如果你用谷歌搜索,你会发现你并不孤单。原因是,与Select相比,Delete是一项昂贵的操作,因为Delete需要以下
改进:您可能希望在编程语言中将查询更改为calculatedate=Now-7天,而不是在查询本身中进行计算 删除需要更多的时间:删除通常需要更多的时间,如果你用谷歌搜索,你会发现你并不孤单。原因是,与Select相比,Delete是一项昂贵的操作,因为Delete需要以下几点: 1将记录与你的情况进行比较 2从表中删除 3从表上创建的一个或多个索引中删除引用 4可能更新表的元数据,也可能不更新,具体取决于引擎 而选择是: 1将记录与您的条件进行比较,或者如果条件使用索引,则使用索引 2返回结果值 考虑到您有更大的表,您可能会有更大的索引,并且与仅选择相比,操作需要花费时间
但您可以尝试建议的改进,并在时间上看到一些改进。改进:您可能希望在编程语言中将查询更改为calculate Date=Now-7天,而不是在查询本身中进行计算 删除需要更多的时间:删除通常需要更多的时间,如果你用谷歌搜索,你会发现你并不孤单。原因是,与Select相比,Delete是一项昂贵的操作,因为Delete需要以下几点: 1将记录与你的情况进行比较 2从表中删除 3从表上创建的一个或多个索引中删除引用 4可能更新表的元数据,也可能不更新,具体取决于引擎 而选择是: 1将记录与您的条件进行比较,或者如果条件使用索引,则使用索引 2返回结果值 考虑到您有更大的表,您可能会有更大的索引,并且与仅选择相比,操作需要花费时间
但是,您可以尝试建议的改进,并应及时看到一些改进。可能有很多原因导致删除花费的时间太长,并且在不了解系统的很多详细信息的情况下,很难找出原因。不过,对于初学者来说,删除实际上需要更新磁盘上的数据、重新排列索引等。它基本上总是比选择更昂贵。可能有很多原因导致删除花费的时间更长,而且在不了解大量系统细节的情况下,很难找出原因。不过,对于初学者来说,删除实际上需要更新磁盘上的数据、重新排列索引等。它基本上总是比选择更昂贵。
SELECT
*
FROM
company
WHERE
symbol IN (SELECT
`hd`.`symbol` AS `symbol`
FROM
(`stockton`.`historical_data` `hd`
JOIN (SELECT
MAX(`stockton`.`historical_data`.`histDate`) AS `maxhd`
FROM
`stockton`.`historical_data`) `m`)
GROUP BY `hd`.`symbol` , `m`.`maxhd`
HAVING (MAX(`hd`.`histDate`) < (NOW() - INTERVAL 7 DAY)));
DELETE
FROM
company
WHERE
symbol IN (SELECT
`hd`.`symbol` AS `symbol`
FROM
(`stockton`.`historical_data` `hd`
JOIN (SELECT
MAX(`stockton`.`historical_data`.`histDate`) AS `maxhd`
FROM
`stockton`.`historical_data`) `m`)
GROUP BY `hd`.`symbol` , `m`.`maxhd`
HAVING (MAX(`hd`.`histDate`) < (NOW() - INTERVAL 7 DAY)));