Mysql 为YEAR()函数创建索引
我正试图加快查询速度。此查询查看年份是否为“2017”。我正在比较使用:Mysql 为YEAR()函数创建索引,mysql,sql,Mysql,Sql,我正试图加快查询速度。此查询查看年份是否为“2017”。我正在比较使用:LIKE='2017%',年份(日期)='2017'和日期之间的成本,这些日期介于'2017-1-1'和'2017-12-31' 我想为colum日期制作索引,但使用功能年,类似于: CREATE INDEX indexDATE ON table (YEAR(date)); 这可能吗?表达逻辑的正确方式是: date BETWEEN '2017-01-01' AND '2017-12-31' 或者如我所愿: date
LIKE='2017%'
,年份(日期)='2017'
和日期之间的成本,这些日期介于'2017-1-1'和'2017-12-31'
我想为colum日期制作索引,但使用功能年,类似于:
CREATE INDEX indexDATE ON
table (YEAR(date));
这可能吗?表达逻辑的正确方式是:
date BETWEEN '2017-01-01' AND '2017-12-31'
或者如我所愿:
date >= '2017-01-01' AND date < '2018-01-01'
日期>='2017-01-01'和日期<'2018-01-01'
这可以使用(日期)
上的索引
表达式LIKE='2017%'
简直是糟糕的编码。您正在日期/时间列上使用字符串函数。这是一个非常糟糕的想法,它排除了索引的使用
表达式YEAR(date)=2017
在逻辑上是可以的——只要删除数字周围的单引号。但是,在列上使用函数会阻止使用索引
最后,在大多数数据集中,年份不是很有选择性。也就是说,您仍将选择行的很大一部分。索引对于此类查询不太有用。您可能希望创建物化视图是的,我知道,但如果可能,我希望创建索引。如果没有更多的选择,我会去做。