[點晴永久免費OA]創建了索引的字段如何在索引不失效的情況下實現模糊查找
當前位置:點晴教程→點晴OA辦公管理信息系統
→『 經驗分享&問題答疑 』
有時候我們使用模糊查詢(like)的時候,會出現索引失效的情況,比如根據手機號碼后四位模糊匹配查詢。 在SQL中模糊查詢:mobile like ‘%8765’,這種情況是不能使用 mobile 上的索引的,那么如果需要根據手機號碼后四位進行模糊查詢,可以用一下方法進行改造。 我們可以加入冗余列,比如 mobile_reverse,內部存儲為 mobile 的倒敘文本,如 mobile 17312345678(手機號碼為虛構),那么 mobile_reverse 存儲 87654321371,為 mobile_reverse 列建立索引,查詢中使用語句 mobile_reverse like reverse(’%5678’) 即可。 reverse 是 SQL 中的反轉函數,這條語句相當于 mobile_reverse like ‘8765%’ ,這種語句是可以使用索引的。 mobile_reverse 的更新可以用觸發器解決,為表新建 ’新增‘和’更新‘的觸發器,寫入以下文本即可。 set new.mobile_reverse = REVERSE(new.mobile); 未改造前模糊查詢語句為: select * from xxx where mobile like ''%5678''; 改造后查詢語句為: select * from xxx where mobile_reverse like reverse(''%5678''); 或者 select * from xxx where mobile_reverse like ''8765%''; 改造后的模糊匹配可以使用 mobile_reverse 字段上的索引,加快查詢速度。
該文章在 2019/8/22 12:35:12 編輯過 |
關鍵字查詢
相關文章
正在查詢... |