大家都知道like的效率很低,數據量大就會很慢,今天發現了一個內置函數instr()效率比like高
-
SELECT * FROM msg_list WHERE title LIKE '%涂山%'
可以替換為:
-
SELECT * FROM msg_list WHERE INSTR(title,'涂山') > 0
在 ThinkPHP / Laravel中使用的方法有:
- 使用 whereRaw()執行原生INSTR()
- 修改構造查詢器(不太推薦,不過用起來方便)
項目根目錄thinkphplibrarythinkdbBuilder.php
MsgList::where([ 'title' => ['instr','涂山']]) ->select();
相關學習推薦:mysql視頻教程