Oracle语句性能
发布网友
发布时间:2022-04-10 00:54
我来回答
共2个回答
热心网友
时间:2022-04-10 02:23
前两个查询基本上是一样的,第三查询中查询谓词“PARTITION_DATE < (SYSDATE - 2 - 1 / 3)”的左参数不是表达式而是字段,此时是可以使用索引的,所以查询速度会快于前两个查询
原因是这样,对于谓词中的“<”运算符,在数据库中运行时会被映射为这个操作符的对应执行函数,数据库 优化器会根据这个操作符的参数情况决定如何执行这个操作符,这里的比较操作符中左参数如果是字段的话,优化器会去查看这个字段上是否有索引,如果有与操作符匹配的索引,会调用索引扫描函数执行操作符,若没有则执行扫描。在这三个语句中第三操作符的参数是字段,可以使用索引,而另外两个查询中操作符的参数都是表达式,不能使用索引,所以效率较低。
热心网友
时间:2022-04-10 03:41
简单的来说 索引列上不要进行计算,在索引列上计算会导致优化器不选择索引