简答题 4.  模糊查询可以使用索引吗?
【正确答案】分为以下几种情况:
   (1)若SELECT子句只检索索引字段那么模糊查询可以使用索引,例如,“SELECT ID FROM TB WHERE ID LIKE '%123%';”可以使用索引。
   (2)若SELECT子句不只检索索引字段还检索其他非索引字段那么分为以下几种情况:
   1)模糊查询形如“WHERE COL_NAME LIKE 'ABC%';”可以用到索引。
   2)模糊查询形如“WHERE COL_NAME LIKE '%ABC';”不能使用索引,但是可以通过REVERSE函数来创建函数索引才能使用到索引。
   3)模糊查询形如“WHERE COL_NAME LIKE '%ABC%';”不能使用索引,但是,如果所查询的字符串有一定的规律的话,那么还是可以使用到索引的,分以下几种情况:
   ①如果字符串ABC始终从原字符串的某个固定位置出现,那么可以创建SUBSTR函数索引进行优化。
   ②如果字符串ABC始终从原字符串结尾的某个固定位置出现,那么可以创建函数组合索引进行优化。
   ③如果字符串ABC在原字符串中位置不固定,那么可以通过改写SQL进行优化。
   4)建全文索引后使用CONTAINS也可以用到域索引。
【答案解析】