最佳化多列 LIKE 查詢以提高 MySQL 效能
在 MySQL 中,頻繁的 LIKE 查詢會降低效能。考慮以下查詢:SELECT x, y, z FROM table WHERE x LIKE '%text%' OR y LIKE '%text%' OR z LIKE '%text%'。我們怎樣才能在資料操作過程中加速此類查詢而不導致顯著的磁碟使用或效能損失?
索引的限制
傳統索引方法對於使用通配符的 LIKE 查詢被證明是無效的搜尋字詞的開頭。索引透過從欄位左側索引特定字元來促進快速存取資料。在 LIKE '%text%' 的情況下,「text」之前的可變字元數會阻礙索引利用率。
全文搜尋 (FTS)
而不是依賴索引,MySQL 提供 MyISAM 表 FTS。 FTS 透過在列中索引單字來簡化文字搜尋。此方法對於兩端帶有通配符的 LIKE 查詢非常有效率。
非 MyISAM 表
對於使用非 MyISAM 儲存引擎的表,自訂索引系統可以予以實施。這涉及到創建一個單獨的索引表,其中單字與相應的表 ID 相關聯。
MySQL 5.6
從 MySQL 5.6 開始,FTS 可用於 InnoDB 表。這為需要 InnoDB 優勢的用戶提供了合適的替代方案。
後果
雖然FTS 顯著提高了LIKE 查詢效能,但它也存在潛在的缺點:
在實作 FTS 之前,請考慮搜尋速度和磁碟使用/資料操作效能之間的權衡。對於快速 LIKE 查詢至關重要的應用程序,FTS 是一種有價值的最佳化技術。
以上是如何優化 MySQL 中的多列 LIKE 查詢以獲得更好的效能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!