mysqlunionall无法走索引

mysqlunionall无法走索引,第1张

mysqlunionall无法走索引11 27

1. like %%失效。 方案:改为like %,只写后面的%就能走索引。

2. 虽然有索引,但是查询条件没有索引列或者order by 排序没有索引列。 方案:让查询条件有索引列

3. 索引列存在null值的情况。 方案:索引列如果没有值,则给空字符串或者数字的0,总之就是不要设置null

1.不用like,不知你那是一个什么列,如果是不太长的字符串列,可以考虑建立一个手工的哈希索引,就是把那个原本要搜索的列转换为crc32()后的一串数字,然后再搜索的时候用 = crc32('keyword'), 这个是优化的一种方法,效率比like好很多

如果只是字符左端或者右端是要查找的重点 可以用left()或者right() 截取一部分来查找 还是用 =

如果是text的列,那只能用全文索引了

2.字符拼接?你是不是用了CONCAT('xx','xx')这个函数?这个就是把字符串拼起来的函数

运算应该就是简单的加减乘除运算吧,或者有NOW()之类的函数,在简单的sql查询里也不可能进行太复杂的运算 *** 作。他提这点,应该是你的语句使mysql不能使用查询缓存,导致效率低

新浪的意思大概就是你的sql效率太低,需要优化,你可以看看sql语句,有哪些优化的地方,优化优化就好了

支持

比如 一个名字是aaabbbccc

select * from a where name like '%bbb%'

这样就OK了啊

搞不定是不是 不是半角输入?


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7442976.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-05
下一篇 2023-04-05

发表评论

登录后才能评论

评论列表(0条)

保存