1. 使用索引。
CREATE INDEX idx_date ON tableName(dateColumn); SELECT * FROM tableName WHERE dateColumn = '2019-01-01';
2. 使用日期函数。
SELECT * FROM tableName WHERE DATE(dateColumn) = '2019-01-01';
3. 使用范围查询。
SELECT * FROM tableName WHERE dateColumn BETWEEN '2019-01-01' AND '2019-01-31';
4. 避免使用函数或表达式。
SELECT * FROM tableName WHERE YEAR(dateColumn) = 2019;
5. 使用日期格式化。
SELECT * FROM tableName WHERE dateColumn LIKE '2019-01%';
6. 分区表。
CREATE TABLE tableName ( id INT AUTO_INCREMENT, dateColumn DATE, PRIMARY KEY (id, dateColumn) ) PARTITION BY RANGE (YEAR(dateColumn)) ( PARTITION p0 VALUES LESS THAN (2020), PARTITION p1 VALUES LESS THAN (2021), PARTITION p2 VALUES LESS THAN (2022), … );
通过以上优化方法,可以大大提高MySQL日期查询的效率。