mysql - 如何在sql中为日期时间字段应用索引
问题描述
我正在尝试从特定日期范围中删除记录。
所以我使用了以下查询
delete from `table_name` where `date`<1580947200
我使用 datetime 作为date
列的数据类型
执行需要很长时间,有时在执行此查询时会卡住。
谁能说如何为这个查询应用索引
解决方案
您的问题不是索引。您的问题是您告诉 MySQL将非数字(DATETIME)列与数值(Unix 时间戳)进行数字比较。
我使用日期时间作为日期列的数据类型
这意味着该列是一DATETIME
列。但;
1580947200
在我看来就像一个 Unix Timestamp 值。
Unix Timestamp与MySQL DateTime 实体不同。
所以; 您需要将这两种类型转换为相同的类型以进行比较;为此,您可以使用UNIX_TIMESTAMP()
MySQL 函数。
DELETE FROM `table_name` WHERE UNIX_TIMESTAMP(`date`) < 1580947200
如果您确实希望为该date
列添加索引,您可以阅读此问答。
推荐阅读
- excel - VBS - 将制表符分隔的 CSV 文件转换为 XLSX
- android - 如何将按钮插入导航工具栏
- apache-kafka - 在 Kafka 中,无法使用 kafka-consumer-groups.sh 创建新的消费者
- javascript - JavaScript split() 使用一个公共字符,然后 join() 使用不同的字符
- xslt - xsl:choose 找到元素的第一个位置,但不是第二个
- windows - 如何找到我的 Windows 系统的外部 IP?
- amazon-web-services - 为 Kubernetes HA 集群选择 AWS 负载均衡器
- windows - Winginx 停止在 Windows 10 上运行
- android - 如何在android studio中将应用程序启动器图标从方形更改为圆形
- c# - 来自 .NET Core 程序的控制台访问在 PowerShellISE 提示符下运行