我正在尝试从特定的日期范围中删除记录。
所以我使用了下面的查询
delete from `table_name` where `date`<1580947200我已经将datetime用作date列的数据类型。
执行这个查询需要很长的时间,有时它会被卡住。
有谁能说出如何为这个查询应用索引吗?
发布于 2020-02-09 17:07:59
你的问题不是索引。您的问题是,您告诉MySQL对一个非数字(日期时间)列与一个数值(Unix时间戳)进行数字比较。
我已经将日期时间用作日期列的数据类型。
这意味着该列是一个DATETIME列。但是;
1580947200
在我看来就像一个Unix时间戳值。
Unix时间戳是,而不是与MySQL DateTime实体相同的DateTime。
因此,为了进行比较,需要将这两种类型转换为相同的类型;要做到这一点,可以使用UNIX_TIMESTAMP() MySQL函数。
DELETE FROM `table_name` WHERE UNIX_TIMESTAMP(`date`) < 1580947200 如果您确实希望向date列添加索引,则可以使用read this Q&A。
https://stackoverflow.com/questions/60139020
复制相似问题