1
19
如果您的目的是找到100个随机行,然后对它们进行排序,那么 Lasse's solution 这是正确的。如果我认为您希望前100行按名称排序,而丢弃其他行,则可以构建如下查询:
优化器将理解这是一个TOP-N查询,并且能够在NAME上使用索引。它不必对整个结果集进行排序,它只需从索引末尾开始向后读取,然后在100行之后停止。 您还可以向原始查询添加一个提示,让优化器知道您只对第一行感兴趣。这可能会生成类似的访问路径:
只是加上
|
2
5
|
3
4
添加以下内容:
到您的WHERE子句。 然而,这并不能满足你的要求。
这 工作正常,但不幸的是,我没有可供测试的Oracle服务器:
但请注意“随机”部分,您的意思是“给我100行大小大于2000的,我不在乎哪100行”。 这真的是你想要的吗? 不,实际上不会得到随机结果,因为每次查询服务器时,结果都会发生变化,但查询优化器会控制您。如果该表的数据加载和索引统计信息随时间而变化,那么在某个时候,您可能会得到与上一个查询不同的数据。 |
4
0
|
maddy · 如何根据oracle SQL中的某一列值进行排名 1 年前 |
kiric8494 · 显示以元音开头和结尾的城市名称 2 年前 |
Franz Biberkopf · Oracle:组合子查询和聚合函数 2 年前 |
BitLauncher · 甲骨文-如何模拟位列和布尔和/或? 2 年前 |
Arifullah · 如何从oracle中的列中删除特定的初始字符? 2 年前 |
Anar · Oracle SQL用户定义函数 2 年前 |
user1312312 · 如何为一组表编写通用触发器? 2 年前 |