|
|
1
8
这个
对于您的查询,我在检查后得出的唯一结论是,它的创建者正在与性能作斗争。如果(这是我的假设)index CODE\u ZIP\u CODE\uix是TBL\u CODE\u ZIP(CODE)上的索引,那么查询将不会使用它,即使它被暗示要使用它。创建者可能没有意识到,使用LPAD(a.code,5,0)而不是a.code,索引就不能使用。ORDERBY子句获取驻留在内存中的中间结果集并对其进行排序。不需要索引。但是有了
当做, PS1:最好使用LPAD(tochar(a.code),5,'0')或tochar(a.code,'fm00009')。然后就可以清楚地知道您在用数据类型做什么了。 PS2:在LPAD上使用基于函数的索引(TO_CHAR(a.code),5,'0')或任何用于左填充zipcode的表达式,可能会对查询有所帮助。 |
|
2
7
您应该能够添加ASC/DESC 之后 +0 |
|
|
3
3
假设代码是一个VARCHAR2列,其中包含数字串(邮政编码)。问题是varchars按字符串而不是数字排序。将零添加到代码中会产生对数字的隐式强制转换,从而按数字排序:
如果存储的代码用零填充,那么就不需要强制转换,因为它们无论如何都会按数字顺序排序。
|
|
|
4
1
有索引吗
可能最初的编写器有一个问题,orderby被优化为索引扫描,这导致查询运行较慢;所以他们加了+0来强制一个不同的访问路径并进行普通排序。 |
|
|
5
0
首先很抱歉回答这个问题,因为这个问题已经很老了。但是+0提示数据库忽略此特定查询的索引(如果它位于.Code列上), 根据数据库的优化器模式,有时索引使检索速度变快,有时索引使检索速度变慢。
|
|
|
Joe Harry · 在oracle 9i中将列转换为行[重复] 8 年前 |