php - 选择当月的记录而不进行全表扫描

标签 php mysql

我有一个包含超过 400 万条记录的数据库,我想在不进行全表扫描的情况下选择当前月份的记录。

我在数据库上创建了日期索引,但性能仍然很慢

SELECT sum(scores) as total
FROM customers 
WHERE YEAR(date_created) = YEAR(CURDATE())
      AND MONTH(cam_date) = MONTH(CURDATE());

代码可以运行,但需要时间来加载

最佳答案

您可以尝试将日期分成三个单独的列 - 年、月和日。搜索整数会更快,然后只搜索日期,但将所有 400 万条记录更改为该方案可能需要一些时间。

关于php - 选择当月的记录而不进行全表扫描,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56458235/

相关文章:

php - 排序 PHP 数组,保留重复项

mysql - 使用 mysql 变量连接

php - 将列/变量添加到 PDO FetchAll 行

mysql - 如何在 MySQL 中定义内联值表?

php - 穆德尔 |获取类(class)数据moodle

php - PHP 中的 MYSQL 查询匹配日期范围的记录

PHP - 多个时差计算

php - if 语句的构建条件比较

php - 如何在php代码中嵌入html文件?

使用 JOINS 和 GROUP BY 进行 MySQL 查询