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

53次阅读

共计 302 个字符,预计需要花费 1 分钟才能阅读完成。

大家都知道 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();

正文完
 0