lou*_*rdh 4 sql oracle sql-order-by sql-insert
我正在使用plsql过程,我正在使用insert-select语句.我需要以有序的方式插入表中.但我在select sql中使用的顺序不起作用.
在oracle中是否有任何特定的方式以有序的方式插入行?
小智 6
只要可以改变插入数据的内容,即在子句中包含一个序列,在anORDER BY内使用anINSERT SELECT就不是毫无意义NEXTVAL的SELECT。即使在获取时不会对插入的行进行排序,这也是访问行时ORDER BY子句在子句中的作用SELECT。
对于这样的目标,您可以使用变通方法将您的ORDER BY子句放在子查询中,它可以工作:
INSERT INTO myTargetTable
(
SELECT mySequence.nextval, sq.* FROM
( SELECT f1, f2, f3, ...fx
FROM mySourceTable
WHERE myCondition
ORDER BY mySortClause
) sq
)
Run Code Online (Sandbox Code Playgroud)
有序插入的典型用例是为了在同一块中共同定位特定值(有效地减少了对订购数据的列上的索引的聚类因子).
这通常需要直接路径插入......
insert /*+ append */ into ...
select ...
from ...
order by ...
Run Code Online (Sandbox Code Playgroud)
只要您接受仅对批量数据有价值的数据,数据将仅加载到高水位线以上,并且存在锁定问题,则没有任何关于此的无效.
另一种实现大致相同效果但更可能更适合OLTP系统的方法是在集群中创建表.
| 归档时间: |
|
| 查看次数: |
6375 次 |
| 最近记录: |