创建函数索引MySQL

时间:2015-11-25 13:34:40

标签: mysql performance

我有一张带有[日期]索引的表格。

[date]专栏:

'2015-01-05'
'2015-01-06'
and etc

我可以为功能索引创建新索引吗? 当我试图创建它时,我得到错误,例如:

create index date_y on table (year(date))

如果我可以,我们没有重新创建程序性能查询。

2 个答案:

答案 0 :(得分:0)

是和否。不,您不能以这种方式在表达式上创建索引。但是,如果你碰巧有mysql v5.7.8或更新版本,那么你可以创建generated columns并且可以在它们上创建a secondary index(二级索引意味着生成的列不能是主键的一部分)

因此,将表达式创建为生成的列,然后在其上创建索引 - 如果您有mysql v5.7.8或更新版本。

答案 1 :(得分:0)

有一刻,我有:

   date is created index on tableX
   id is created index on tableX
   id is created index on tableY

我的查询:

   Select * from tableX as x left outer join tableY as y on x.id=y.id 
    where year(x.date)=2015 and month(x.date)=11

我应该重新创建日期:

create index date on tableX (date,id)

还是其他什么?