Mysql
如何改進大桌子上的簡單 LIKE
我有一個在 MySQL 上執行的面向業務的 Web 應用程序,它在某些頁面上執行這樣的查詢。
SELECT event_user, event_type, event_details FROM `event_history` WHERE `event_details` LIKE '%keyword%' ORDER BY `event_history_id` DESC;
該表現在有 300,000 條記錄並且還在增長。
是否可以提高此查詢的性能?
查詢中的前導“%”禁用索引的使用。隨著您積累更多數據,這將導致性能繼續下降。
您可能需要考慮考慮使用具有適當語法的 FULLTEXT 索引。
如前所述,前導 % 使事情變得棘手,但如果 event_details 欄位包含分隔項目的列表並且您正在搜尋其中一項,那麼您可以創建一個子表 event_history_details ,其中包含 event_details 欄位中每個項目的一行每個事件。
這樣的設置可以很好地擴展並且是 SARGable。不幸的是,它涉及的不僅僅是更改查詢。