MySQL的Like查詢是一種非常常見的模糊匹配方式,但是有人會問,like查詢會使用索引嗎?這是很多開發者關注的問題。
首先,我們需要知道,like查詢是不能使用常規的b-tree索引的,因為like查詢涉及到了字符串屬性的部分匹配,需要對表中的每一行數據進行掃描匹配,因此效率非常低下。
SELECT * FROM table WHERE name LIKE '%張三%';
上面的查詢會返回所有包含“張三”的姓名,但是如果表中的數據量很大,查詢的效率會非常慢。
那么,如何優化Like查詢呢?
我們可以使用全文索引來優化Like查詢。全文索引是基于哈希表實現的,能夠高效地支持Like查詢。
全文索引需要我們先創建索引(通常使用fulltext類型):
CREATE FULLTEXT INDEX index_name ON table_name(column_name);
然后,我們就可以使用MATCH AGAINST語句進行查詢了:
SELECT * FROM table WHERE MATCH(name) AGAINST('張三');
使用全文索引的Like查詢,比傳統的Like查詢高效很多,可以大大減少數據庫的負擔。
但是,需要注意的是,全文索引只能用于MyISAM和InnoDB引擎,其他引擎不支持。
綜上,Like查詢一般情況下是無法使用索引的,但是我們可以通過全文索引進行優化。開發者需要根據實際情況,選擇合適的索引類型。