Oacle 랜 덤 으로 줄 가 져 오기
1. 시계 전체 스 캔
2. 샘플링 테이블 스 캔
전체 테이블 스 캔 (Full table Scan)
전체 표 스 캔 은 표 의 모든 기록 을 되 돌려 줍 니 다.
전체 표 스 캔 을 실행 하고 Oracle 은 표 의 모든 기록 을 읽 으 며 각 줄 이 WHERE 조건 을 만족 시 키 는 지 확인 합 니 다.Oracle 순서의 읽 기 는 이 표 의 모든 데이터 블록 에 분 배 됩 니 다. 그러면 전체 표 스 캔 은 여러 개의 읽 기 에 도움 이 될 수 있 습 니 다.
각 데이터 블록 Oracle 은 한 번 만 읽 습 니 다.
샘플링 테이블 스 캔 (sample table scan)
샘플링 표 스 캔 반환 표 에서 무 작위 샘플링 데이터.
이러한 접근 방식 은 FROM 구문 에 SAMPLE 옵션 이나 SAMPLE BLOCK 옵션 을 포함 해 야 합 니 다.
SAMPLE 옵션: 샘플링 표 스 캔 을 줄 별로 실행 할 때 Oracle 은 표 에서 특정 백분율 의 기록 을 읽 고 WHERE 자 구 를 만족 시 키 는 지 판단 하여 결 과 를 되 돌려 줍 니 다.
샘플링 스 캔 방식 을 사용 하면 Oacle 의 최적화 기 CBO 가 자동 으로 실 행 됩 니 다.
100 만 데이터, sample 방식 을 사용 할 때 평균 15 - 31 밀리초 에 기록 을 되 돌 릴 수 있 으 며, order by dbms 를 사용 합 니 다.random. random 은 평균 400 밀리초 가 필요 합 니 다.
SELECT accountnumber, batchno, sequence
FROM e_pin
WHERE sequence=
(SELECT sequence FROM
(SELECT sequence FROM e_pin WHERE salecardflag='0' AND rownum<1000 ORDER BY dbms_random.random) WHERE rownum=1);
SELECT accountnumber, batchno, sequence FROM e_pin sample(10) where salecardflag='0' and rownum<=1;
저장 프로시저:
CREATE OR REPLACE PROCEDURE p_e_pin(
i_result OUT NUMBER,
s_accountnumber OUT VARCHAR2,
s_batchno OUT VARCHAR2,
s_sequence OUT VARCHAR2
)
AS
no_evoucher EXCEPTION;
BEGIN
i_result:=0;
BEGIN
SELECT accountnumber, batchno, sequence
INTO s_accountnumber, s_batchno, s_sequence
FROM u_uvc_evoucher sample(10) where salecardflag='0' and rownum<=1 FOR UPDATE skip locked;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RAISE no_evoucher;
END;
UPDATE e_pin SET salecardflag='4' WHERE sequence = s_sequence AND salecardflag='0';
IF SQL%NOTFOUND THEN
RAISE no_evoucher;
END IF;
COMMIT;
EXCEPTION
WHEN no_evoucher THEN
i_result:=-1;
s_accountnumber:='';
s_batchno:='';
s_sequence:='';
ROLLBACK;
END p_e_pin;
/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
activemq 5.5 의 입문 은 설치, 시작, 데이터베이스 지속 화 를 포함한다Apache ActiveMQ 5.5.0 은 주로 유지보수 버 전 으로 130 개가 넘 는 문 제 를 복 구 했 으 며 대부분 bug 와 개선 이 었 다. Improved performance for offline d...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.