## 如何使用 InnoDB 最佳化 MySQL LIKE \'%string%\' 查詢?

Linda Hamilton
發布: 2024-10-25 06:22:02
原創
614 人瀏覽過

## How Can I Optimize MySQL LIKE '%string%' Queries with InnoDB?

在 InnoDB 中最佳化 MySQL LIKE '%string%' 查詢

許多應用程式需要在文字正文中搜尋字串。 MySQL 提供了 LIKE 運算子來執行此類搜索,但是我們如何優化這些查詢以獲得最佳效能?

問題

考慮下表:

<code class="sql">CREATE TABLE `example` (
`id` int(11) unsigned NOT NULL auto_increment,
`keywords` varchar(200) NOT NULL,
PRIMARY KEY  (`id`)
) ENGINE=InnoDB;</code>
登入後複製

執行以下查詢時:

<code class="sql">SELECT id FROM example WHERE keywords LIKE '%whatever%'</code>
登入後複製

我們可能會預期資料庫使用索引來加快搜尋速度。但是,如果我們使用以下方法在關鍵字列上新增簡單索引:

<code class="sql">ALTER TABLE `example` ADD INDEX `idxSearch` (`keywords`);</code>
登入後複製

EXPLAIN 查詢顯示 MySQL 仍然需要掃描整個資料表。

解決方案 h3>

MySQL 透過符合搜尋字串的開頭來使用索引。對於像 LIKE 'whatever%' 這樣的查詢,可以使用索引,因為 'whatever' 錨定在字串的開頭。

但是,像 LIKE '%whatever%' 這樣的查詢沒有這樣的錨。搜尋字詞在字串中「浮動」出現,迫使 MySQL 掃描整個欄位。

為了最佳化這類查詢,我們可以使用全文索引。這些索引是專門為「浮動」搜尋而設計的。 InnoDB 從 5.6.4 版本開始支援全文索引,使其成為優化 LIKE '%string%' 查詢的可行選項。

以上是## 如何使用 InnoDB 最佳化 MySQL LIKE \'%string%\' 查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!