勵志

勵志人生知識庫

like走索引

在資料庫查詢中,特別是使用MySQLOracle這類關係型資料庫時,`LIKE`語句的索引使用情況取決於通配符的位置。以下是關於`LIKE`查詢與索引使用的一些規則:

通配符位置:

當百分號(`%`)出現在`LIKE`語句的關鍵字後面時,例如`LIKE "張三%"`,MySQL通常會使用索引,尤其是當查詢的列有索引時。

如果百分號出現在關鍵字前面,例如`LIKE "%張三"`,MySQL通常不會使用索引。

索引覆蓋:

如果查詢的列上有索引,並且查詢可以僅通過使用這些索引來滿足,MySQL會優先使用覆蓋索引。

即使百分號出現在前面,如果查詢可以走覆蓋索引,MySQL也可能選擇使用索引。

最佳化策略:

當需要執行模糊查詢時,可以考慮使用其他函式或方法,如Oracle中的`INSTR`函式或MySQL中的`LOCATE`和`POSITION`函式,這些函式可能比純`LIKE`查詢更高效。

對於以通配符開頭的`LIKE`查詢,可以考慮將其轉換為前綴匹配的形式,例如`LIKE 'abc%'`,以便利用索引。

全文搜尋引擎:

對於複雜的模糊查詢需求,如基於單詞的模糊搜尋,使用全文搜尋引擎可能比傳統的`LIKE`查詢更合適。

綜上所述,`LIKE`查詢是否走索引取決於通配符的位置以及是否滿足最左前綴原則。在實際套用中,應根據具體情況選擇合適的查詢方式和最佳化策略。