SQL在什么情况下使用全表扫描
本文对什么情况下进行SQL扫描的问题进行了全面的分析,可以在实际应用中做一个参考。
1:对返回的行没有限定,即没有where语句。
2.限制与任何索引的主列对应的数据表的行。例如,如果在City-State-Zip列中创建了一个三列复合索引,则只有在State有列限制的情况下才能使用该索引,因为State不是索引的主列。
3.对索引的主列有限制,但条件用在表达式中,例如城市中有一个索引,但如果用表达式,如:
以下是引用:
其中upper(city)='TokYo '或
City || 'X '如' TOKYO% ',
则不会使用该索引。
4:对索引的主列有限制,但条件要么为空,要么不相等。例如,有一个关于城市的索引,但是如果你使用一个表达式,比如:
以下为引用片段:
where city为null,where city为
not null,where city!= '东京'。
5:对索引的主列有限制,但条件使用like操作,值以“%”开头,或者值是赋值变量。例如:
以下是引号片段:
where city like“% yok %”
where city like:city _ bind _ variable XL _ Rao
0条评论