如果某列上面没有索引
某列 like “参数%”
某列 like “%参数%”某列 like "%参数"都是全表扫描。 效率上面没有太大的差别。
如果某列上面, 有一个普通的索引。
假设数据量有 100W 行。 其中 '123456' 只有一行
某列 like “123456%” 使用索引, 只需要检索一行, 然后返回。
某列 like “%123456%” 无法使用索引, 需要检索 100W 行, 依次判断以后, 然后返回。
某列 like "%123456" 无法使用索引, 需要检索 100W 行, 依次判断以后, 然后返回。
没用上索引时都是全表扫描,差别不大
用上索引时表现不一样,正向键索引(就是create index idx1 on 表(列))对'参数%'可进行有效的range scan,对其它2种无效,反向键索引(就是create index idx1 on 表(reverse(列))对'%参数'可进行有效的range scan,对其它2种无效
like “参数%” :查询满足以“参数”开头的字符;
like “%参数” :查询满足以“参数”结尾的字符;
like “%参数%” :查询满足含有“参数”的字符;
效率上面没有太大的差别