|
|
1
2
你说:
你所有的
实际上,如何“重写”查询并不重要——这不像应用程序代码,优化器无论如何都要重新排列查询的所有部分。除非在seek列上有足够的选择性索引,或者整个查询完全被一个索引覆盖,否则速度会很慢。 |
|
|
2
2
不确定这些是否适用于Oracle。在fk id列中是否有用于联接的索引。另外,如果您可以避免'notin'在SQL中不是一个不可搜索的类型,这会减慢查询的速度。
|
|
|
3
1
这样就完全不需要访问T1中的473m行了。
如果所有这些都准备好了,查询如下:
应该是(优化器是一个挑剔的野兽)能够做一个半连接驱动的快速全面扫描索引对T1,从来没有扫描数据块。也要考虑把它写得像:
因为优化器可能会以稍微不同的方式编写这些计划。 |
|
|
4
1
下面我假设
考虑到这种情况,下面的子句不应该对查询的性能有任何影响。。。
然而,你接着说
这表明查询正在查找
... 尽管我怀疑不是。您可以尝试暗示获取要在其上使用索引的查询
另一件事是,统计数据有多新鲜?当优化器选择一个非常糟糕的执行计划时,通常是因为统计数据已经过时了。
顺便问一下,你为什么要加入T2?您的要求可以通过选择
编辑
如果结果显示
|
|
|
maddy · 如何根据oracle SQL中的某一列值进行排名 3 年前 |
|
|
kiric8494 · 显示以元音开头和结尾的城市名称 4 年前 |
|
|
Franz Biberkopf · Oracle:组合子查询和聚合函数 4 年前 |
|
|
BitLauncher · 甲骨文-如何模拟位列和布尔和/或? 4 年前 |
|
|
Arifullah · 如何从oracle中的列中删除特定的初始字符? 4 年前 |
|
|
Anar · Oracle SQL用户定义函数 4 年前 |
|
|
user1312312 · 如何为一组表编写通用触发器? 4 年前 |