php - 如何加速数百万个项目的BETWEEN操作?

标签 php mysql sql

我在 MySQL 中有表(非常简化):

id      | name | datetime            | label
1       | a    | 2019-10-01 10:00:01 | null
2       | a1   | 2019-10-01 10:00:03 | null
3       | a2   | 2019-10-01 10:00:14 | null
....
4000000 | z1   | 2019-10-01 23:12:41 | null

现在我正在执行操作:

UPDATE my_table SET label = "xxx" WHERE datetime BETWEEN '2019-10-01 13:00:00' AND '2019-10-01 13:30:00'

这样做是正确的,但是需要很长很长的时间(超过 30 秒)。 我怎样才能加快我的操作速度?也许是其他东西而不是“之间”?索引?我应该设置什么索引?

最佳答案

对于此查询:

UPDATE my_table
    SET label = "xxx"
    WHERE datetime BETWEEN '2019-10-01 13:00:00' AND '2019-10-01 13:30:00'

您可以在日期时间上添加索引:

CREATE INDEX idx_my_table_datetime ON my_table(datetime);

关于php - 如何加速数百万个项目的BETWEEN操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59125624/

相关文章:

mysql:在两列中搜索一个值并返回找到的列名

sql - 形成选择两个字段的最大差异的 SQL 查询

php - Laravel 在循环中 Eloquent

php - 搜索某些 STRING 的 XML 属性

php - MySQL 返回包含 HTML 的空白行

mysql - 如何在 yii 模型中将 mysql spatial POINT 转换为可读格式?

mysql - Group_CONCAT() 检索信息

php - 在线游戏,或比 ajax 更快的发送/接收数据的东西

mysql - 循环程序 mysql 生成一对行

c# - 如何在 Select 语句的 IN 子句中提供一串 ID,即使该列是整数