模糊查询的速度优化

yyj135 2012-03-30 09:52:18
数据库:MySql 5.5.15
现在的表(引擎InnoDB)有个字段Title,用户输入的时候要求模糊查询,即
SELECT * FROM tbl where Title like '%人生%';

因为查询条件包含了两个%,这样速度很慢,不知各位是怎样优化的?谢谢!
...全文
317 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
如果你想查询比较快的话,你应该建立索引,或者你用缓存技术,第二中不太好。
rucypli 2012-03-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

有没有变通的方法可以做到呀?
[/Quote]
用左右匹配的用不到索引 用的是全表扫描

变通的方法是做全文索引,比较复杂
wwwwb 2012-03-30
  • 打赏
  • 举报
回复
没有,查找内容当中的人生必须用%人生% OR 用INSTR之类的,无法用到索引
yyj135 2012-03-30
  • 打赏
  • 举报
回复
有没有变通的方法可以做到呀?
wwwwb 2012-03-30
  • 打赏
  • 举报
回复
没法,这样无法用到索引,全文查找?用字符查找函数也无法用到索引
qdkfriend 2012-03-30
  • 打赏
  • 举报
回复
sql语句本身是没有办法优化的,这是由你的需求决定的
wwwwb 2012-03-30
  • 打赏
  • 举报
回复
参考
http://blog.sina.com.cn/s/blog_5aefd9770100akpe.html
官方的
http://dev.mysql.com/doc/refman/5.1/zh/functions.html#fulltext-search
yyj135 2012-03-30
  • 打赏
  • 举报
回复
TO:rucypli
请问是否有全文索引方面的资料或例子?谢谢!
ACMAIN_CHM 2012-03-30
  • 打赏
  • 举报
回复
无法在语句层面优化 %X% 这种查询,只能使用全表扫描,优化你的硬件资源。

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧