https://www.nowcoder.com/feed/main/detail/ec92e302007e44569a12546f4331324b
解题思路
踩一下
正确答案: 在SQL中,使用LIKE关键字进行模糊匹配时,如果使用了前缀通配符(例如'%林'),数据库将无法使用索引来加速查询。这是因为索引的结构是为了快速定位某个值,而前缀通配符使得数据库无法确定从哪个位置开始查找。
解答思路: 在使用LIKE关键字时,尤其是以'%'开头的模式,数据库必须扫描整个表中的每一行,因为没有办法确定某个值是否匹配。这导致了全表扫描,极大降低了查询效率。如果LIKE模式是'林%',那么数据库可以利用索引,因为它可以从索引的起始位置开始查找,快速定位到符合条件的行。
问题考点的深度知识讲解:
创建索引: CREATE INDEX idx_name ON user(name);
查询示例: 如果查询是LIKE '%林',其查询过程如下: FOR each row in user: IF row.name matches '%林': add row to results
而如果是LIKE '林%',查询过程可以如下: START at index where name starts with '林': WHILE next row exists: IF row.name starts with '林': add row to results ELSE: break
通过上述过程可以看出,LIKE '%林'无法利用索引,而LIKE '林%'则可以高效利用索引进行查询。