单选题
电话号码表t_phonebook中含有100万条数据,其中号码字段phoneon上创建了唯一索引,且电话号码全部由数字组成,要统计号码头为321的电话号码的数量,下面写法执行速度最慢的是( )。
A. select count (*)from t_phonebook where phoneno>="321" and phoneno<"321A"
B. select count (*)from t_phonebook where phoneno like"321%"
C. select count (*)from t_phonebook where substr(phoneno,1,3)="321"
D. select count (0)from t_phonebook where phoneno like"321%"
参考答案:C图图解析:
这道题,分析思路是从索引是否失效出发!A项:使用<>、not in 、not exist,对于这三种情况大多数情况下认为结果集很大,一般大于5%-15%就不走索引而走FTS(全表扫描)。所以A项可能索引失效也可能不失效,不当选;C项:在索引列上使用函数。如SUBSTR,DECODE,INSTR等,对索引列进行运算,索引失效。需要建立函数索引就便可以解决,C项是最慢的。当选;故本题正确答案选C。




