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了啊
搞不定是不是 不是半角输入?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)