LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

SQL數據庫優化之:like %xxx%該如何優化

admin
2023年11月20日 12:36 本文熱度 728

今天給大家分享一個小知識,實際項目中,like %xxx%的情況其實挺多的,比如某個表單如果支持根據公司名進行搜索,用戶一般都是輸入湖南xxx有限公司中的xxx進行搜索,所以對于接口而言,就必須使用like %xxx%來支持,從而不符合最左前綴原則導致索引失效,那么該如何優化這種情況呢?

第一種可以嘗試的方案就是利用索引條件下推,我先演示再講原理,比如我有下面一張訂單表:

就算給company_name創建一個索引,執行where company_name like '%騰訊%'也不會走索引。

但是如果給created_at, company_name創建一個聯合索引,那么執行where created_at=CURDATE() and company_name like '%騰訊%'就會走聯合索引,并且company_name like '%騰訊%'就會利用到索引條件下推機制,比如下圖中Extra里的Using index condition就表示利用了索引條件下推。

所以,并不是like %xxx%就一定會導致索引失效,原理也可以配合其他字段一起來建聯合索引,從而使用到索引條件下推機制。

再來簡單分析一下索引條件下推的原理,在執行查詢時先利用SQL中所提供的created_at條件在聯合索引B+樹中進行快速查找,匹配到所有符合created_at條件的B+樹葉子節點后,再根據company_name條件進行過濾,然后再根據過濾之后的結果中的主鍵ID進行回表找到其他字段(回表),最終才返回結果,這樣處理的好處是能夠減少回表的次數,從而提高查詢效率。

當然,如果實在不能建立或不方便建立聯合索引,導致不能利用索引條件下推機制,那么其實可以先試試Mysql中的全文索引,最后才考慮引入ES等中間件,當然Mysql其他一些常規優化機制也是可以先考慮的,比如分頁、索引覆蓋(不select *)等。


該文章在 2023/11/20 12:36:21 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
亚洲精品国产综合一线久久 | 亚洲第一影院中文字幕 | 亚洲乱码国产精品 | 日韩欧美视频在线精品网站 | 亚洲国语精品自产拍在线观看 | 久久久精品国产免费 |