like百分號前置不會走索引?

2022-09-02 10:39:09 字數 1148 閱讀 1261

」模糊查詢,前置百分號不走索引;後置百分號才會走索引」這可能是大部分人都知道的「常識」,然而,這週在做sql優化的時候,無意中碰到了意外情況–模糊查詢,前置百分號也走索引!

舉個栗子 表: test_user 索引:index_mobile

create table `test_user` (

`id` int(11) not null auto_increment comment '主鍵',

`name` varchar(64) default null comment '名字',

`mobile` varchar(11) default null comment '手機號',

primary key (`id`),

key `index_mobile` (`mobile`) using btree

) engine=innodb default charset=utf8 comment='測試的使用者表';

只查手機號

從上面中的執行計畫可以看出,查詢是走了索引的

查手機號和主鍵

從執行計畫中看,也是走了索引的

select 索引欄位和非索引字段

從執行計畫,可以看出這次是沒有走索引的了

假如where後面,多個條件

還是會走索引了!

從上面幾次試驗,可以得到乙個結論:like查詢百分號前置,並不是100%不會走索引。如果只select索引字段,或者select索引欄位和主鍵,也會走索引的。

當然,文章說的這種情況,是比較偏的,實際工作,很少只select索引欄位的,但是,知道這個,以後跟別人討論到「like百分號前置不走索引」的時候,你的內心可以是這樣了

LIKE搜尋包含百分號資料

1.介紹 在where子句中可以使用like操作符,用來檢視某一列中的字串是否匹配指定的模式。所匹配的模式可以使用普通字元和下面兩個萬用字元的組合指定 list 下劃線字元 匹配指定位置的乙個任意字元。百分號字元 匹配從指定位置開始的任意個字元。list 2.應用 如果需要對乙個字串中的下劃線或是百...

特殊用法 百分號 井號

為了完整起見,我這裡再用一些例子加以說明 的一些特異功能 假設我們定義了乙個變數為 file dir1 dir2 dir3 my.file.txt 我們可以用 分別替換獲得不同的值 拿掉第一條 及其左邊的字串 dir1 dir2 dir3 my.file.txt 拿掉最後一條 及其左邊的字串 my....

MySql中like模糊查詢 百分號之間使用變數值

條件 表first a 關鍵字 表later b 含有關鍵字a的字段 問題 在表first中,a 作為表later中b查詢條數的關鍵字,分別查出每個關鍵字a對應表later中b含有的條數?如 a 含有 12,13,11 b 含有 145,124,135,125,111 查詢結果 a count b ...