Sql 数据被处理。记住,成本是用来制定计划的,就是这样。由于在查询时执行计划很重要,请尝试了解操作顺序是否合理。您的解决方案对我帮助很大。现在我需要解决类似的问题,但这次有两个约束条件。1)仅考虑表2的记录数,表2中有一个列,P1 VARCHR2(10)。它有两
Sql 数据被处理。记住,成本是用来制定计划的,就是这样。由于在查询时执行计划很重要,请尝试了解操作顺序是否合理。您的解决方案对我帮助很大。现在我需要解决类似的问题,但这次有两个约束条件。1)仅考虑表2的记录数,表2中有一个列,P1 VARCHR2(10)。它有两,sql,oracle,Sql,Oracle,数据被处理。记住,成本是用来制定计划的,就是这样。由于在查询时执行计划很重要,请尝试了解操作顺序是否合理。您的解决方案对我帮助很大。现在我需要解决类似的问题,但这次有两个约束条件。1)仅考虑表2的记录数,表2中有一个列,P1 VARCHR2(10)。它有两个值,0或1。因此,在选择范围时,应首先考虑值为0的记录。我认为rowid方法在这种情况下不起作用,因为最后一个rowid的值可能是0,如果是,那么应该首先选择它。您知道有什么这样的快速解决方案吗?rowid方法假设您正在考虑更新所有行。如果跳
数据被处理。记住,成本是用来制定计划的,就是这样。由于在查询时执行计划很重要,请尝试了解操作顺序是否合理。您的解决方案对我帮助很大。现在我需要解决类似的问题,但这次有两个约束条件。1)仅考虑表2的记录数,表2中有一个列,P1 VARCHR2(10)。它有两个值,0或1。因此,在选择范围时,应首先考虑值为0的记录。我认为rowid方法在这种情况下不起作用,因为最后一个rowid的值可能是0,如果是,那么应该首先选择它。您知道有什么这样的快速解决方案吗?rowid方法假设您正在考虑更新所有行。如果跳过行,显然不能使用“rowidX和rowidY之间”。将行重新定位到另一个表是一个选项,还是在更新时所有行(候选行和希望忽略的行)都需要在同一个表中?
SELECT CBR.CUSTOMER_ID, CBR.NAME, CBR.DEPT_NAME
FROM
(
SELECT CUSTOMER_ID, NAME, HOME_TELNO, DEPT_NAME, ROWNUM AS RNUM
FROM TABLE_A ORDER BY CUSTOMER_ID ASC
) CBR
WHERE CBR.RNUM < :sqli_end_rownum AND CBR.RNUM >= :sqli_start_rownum ;
select bucket_num, min(rid) as start_rowid, max(rid) as end_rowid, count(*)
from (select rowid rid
, ntile(8) over (order by rowid) as bucket_num
from table_a
)
group by bucket_num
order by bucket_num;
BUCKET_NUM START_ROWID END_ROWID COUNT(*)
1 AABetTAAIAAB8GCAAA AABetTAAIAAB8u5AAl 82792
2 AABetTAAIAAB8u5AAm AABetTAAIAAB9RrABi 82792
3 AABetTAAIAAB9RrABj AABetTAAIAAB96vAAU 82792
4 AABetTAAIAAB96vAAV AABetTAAIAAB+gKAAs 82792
5 AABetTAAIAAB+gKAAt AABetTAAIAAB+/vABv 82792
6 AABetTAAIAAB+/vABw AABetTAAIAAB/hbAB1 82791
7 AABetTAAIAAB/hbAB2 AABetTAAIAACARDABf 82791
8 AABetTAAIAACARDABg AABetTAAIAACBGnABq 82791
SELECT <whatever you need>
FROM <table>
WHERE rowid BETWEEN 'AABetTAAIAAB8GCAAA' and 'AABetTAAIAAB8u5AAl'
...
SELECT CBR.CUSTOMER_ID, CBR.NAME, CBR.DEPT_NAME
FROM
(
SELECT CUSTOMER_ID, NAME, HOME_TELNO, DEPT_NAME, ROWNUM AS RNUM
FROM TABLE_A ORDER BY CUSTOMER_ID ASC
) CBR
WHERE CBR.RNUM < :sqli_end_rownum AND CBR.RNUM >= :sqli_start_rownum ;
SELECT CBR.CUSTOMER_ID, CBR.NAME, CBR.DEPT_NAME
FROM table_a
WHERE rowid BETWEEN :start_rowid and :end_rowid