乐趣区

MySQLOracle模糊查询-使用-instr-替代-like-提升效率

大家都知道 like 的效率很低,数据量大就会很慢,今天发现了一个内置函数 instr() 效率比 like 高

SELECT * FROM msg_list WHERE title LIKE '% 涂山 %'

可以替换为:

SELECT * FROM msg_list WHERE INSTR(title,'涂山') > 0

在 ThinkPHP / Laravel 中使用的方法有:

  1. 使用 whereRaw() 执行原生 INSTR()
  2. 修改构造查询器(不太推荐,不过用起来方便)
 项目根目录 \thinkphp\library\think\db\Builder.php


MsgList::where(['title' => ['instr','涂山']
])
    ->select();
退出移动版