关于mysql无法创建函数索引之蛋疼事情,具体如下:

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于mysql无法创建函数索引之蛋疼事情,具体如下:相关的知识,希望对你有一定的参考价值。

首先,我是新手。
mysql:
select pd
from aaa
where substring(taskname,1,10)='asqazs1112';
aaa表有3千万条记录。虽然我在taskname上加了索引,但是我用explain看了下,结果是全表扫描。显然加了函数不走索引了,现在的问题是,除了我在表中加一个字段来存放substring(taskname,1,10)以外,还有没有其他可以优化的方法,,毕竟加个字段都要很久很久时间,求高人指教,谢谢!

这样索引根本是没有办法用到的。
为何要将字符串全部放在一起?
是否可以将这一段另外设定一个字段存放?追问

我试过另外设定一个字段存放这个 字符串了,除了这个方法没有别的办法 了?

追答

CREATE INDEX idx_1 ON table_1 ( func_1(col_1), func_2(col_2), func_3(col_3)

这样试试,但这样还是不是很好,在业务逻辑上下下功夫,修改一下。

追问

首先,mysql不能创建 函数索引...不然我也不用来提问了...

追答

你的mysql是哪个版本的?
最彻底的办法是改变数据结构,让sql不要写函数就可以查询的。

追问

有哪个版本mysql 支持函数索引 ??哪个??

追答

具体真的没有试过

追问

-0- ,好吧,继续坐等强人

参考技术A 虽然很不情愿substring没法用索引,但是自己也没必要继续钻牛角尖了,倒是现在sql8.0 好像有了函数索引

以上是关于关于mysql无法创建函数索引之蛋疼事情,具体如下:的主要内容,如果未能解决你的问题,请参考以下文章

MySQL函数索引及优化

Mysql梳理-关于索引/引擎与锁

关于mysql视图的问题。见补充

MySQL 实体框架:无法创建索引

mysql索引总结

高性能MySQL--创建高性能的索引