Search
Duplicate

Top N 쿼리

Top N 쿼리

κ²°κ³Ό μ§‘ν•©μ—μ„œ μƒμœ„ N개의 행을 λ°˜ν™˜ν•˜λŠ” 쿼리

μ’…λ₯˜

β€’
ROWNUM
β€’
ROWID

ROWNUM

SELECT 문의 논리적인 μˆœλ²ˆμ„ λ‚˜νƒ€λ‚΄λŠ” κ°€μƒμ˜ 컬럼
ORACLE DB
데이터λ₯Ό 좜λ ₯ν•  λ•Œ λΆ€μ—¬λ˜λŠ” 논리적인 μˆœμ„œ 번호이기 λ•Œλ¬Έμ—, ROWNUM 을 μ‚¬μš©ν•˜μ—¬ νŽ˜μ΄μ§• 처리λ₯Ό ν•˜κΈ° μœ„ν•΄μ„œλŠ” 인라인 λ·°λ₯Ό μ¨μ•Όν•œλ‹€.
νŽ˜μ΄μ§• 처리(Paging)λž€?
νŽ˜μ΄μ§• μ²˜λ¦¬λŠ” λŒ€λŸ‰μ˜ 데이터λ₯Ό ν•œ λ²ˆμ— λͺ¨λ‘ μ‘°νšŒν•˜μ§€ μ•Šκ³ , μΌμ •ν•œ 개수둜 λ‚˜λˆ„μ–΄ νŽ˜μ΄μ§€ λ‹¨μœ„λ‘œ μ‘°νšŒν•˜λŠ” κΈ°λ²•μž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, κ²Œμ‹œνŒμ— 1,000개의 κ²Œμ‹œκΈ€μ΄ μžˆμ„ λ•Œ ν•œ νŽ˜μ΄μ§€μ— 10κ°œμ”© 보여주면 총 100νŽ˜μ΄μ§€κ°€ μƒμ„±λ©λ‹ˆλ‹€.
νŽ˜μ΄μ§• 처리의 μ£Όμš” λͺ©μ :
β€’
μ„±λŠ₯ ν–₯상: ν•„μš”ν•œ λ°μ΄ν„°λ§Œ μ‘°νšŒν•˜μ—¬ DB λΆ€ν•˜λ₯Ό 쀄이고 응닡 속도λ₯Ό κ°œμ„ ν•©λ‹ˆλ‹€.
β€’
μ‚¬μš©μž κ²½ν—˜ κ°œμ„ : ν•œ 화면에 μ μ ˆν•œ μ–‘μ˜ 데이터λ₯Ό λ³΄μ—¬μ€ŒμœΌλ‘œμ¨ 가독성과 νŽΈμ˜μ„±μ„ λ†’μž…λ‹ˆλ‹€.
β€’
λ©”λͺ¨λ¦¬ 효율: 전체 데이터λ₯Ό λ©”λͺ¨λ¦¬μ— λ‘œλ“œν•˜μ§€ μ•Šμ•„ μ„œλ²„ μžμ›μ„ 효율적으둜 μ‚¬μš©ν•©λ‹ˆλ‹€.
Oracleμ—μ„œλŠ” ROWNUM을 ν™œμš©ν•˜μ—¬ νŽ˜μ΄μ§• 처리λ₯Ό κ΅¬ν˜„ν•˜λ©°, μ›ν•˜λŠ” λ²”μœ„μ˜ λ°μ΄ν„°λ§Œ μΆ”μΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€.

ROWNUM λ₯Ό ν™œμš©ν•œ νŽ˜μ΄μ§• 처리

SELECT * FROM ( SELECT ROWNUM AS row_num, no, title, content FROM board WHERE ROWNUM <= 10 -- μ›ν•˜λŠ” νŽ˜μ΄μ§€ 크기λ₯Ό 여기에 μ§€μ •ν•©λ‹ˆλ‹€. ) WHERE row_num >= 1; -- μ›ν•˜λŠ” νŽ˜μ΄μ§€ λ²ˆν˜Έμ— 맞게 μ‹œμž‘ν•˜λŠ” ν–‰ 번호λ₯Ό 여기에 μ§€μ •ν•©λ‹ˆλ‹€.
SQL
볡사

board ν…Œμ΄λΈ” 생성 및 μƒ˜ν”Œ 데이터

-- DDL CREATE TABLE board ( no NUMBER NOT NULL, title varchar2(100) NOT NULL, writer varchar2(100) NOT NULL, content varchar2(1000), reg_date DATE DEFAULT sysdate NOT NULL, upd_date DATE DEFAULT sysdate NOT NULL, views NUMBER DEFAULT 0 NOT NULL, PRIMARY KEY (no) );
SQL
볡사
-- μƒ˜ν”Œ 데이터 INTO board (title, writer, content) VALUES ('제λͺ© 1', 'μž‘μ„±μž 1', 'λ‚΄μš© 1'); INTO board (title, writer, content) VALUES ('제λͺ© 2', 'μž‘μ„±μž 2', 'λ‚΄μš© 2'); INTO board (title, writer, content) VALUES ('제λͺ© 3', 'μž‘μ„±μž 3', 'λ‚΄μš© 3'); INTO board (title, writer, content) VALUES ('제λͺ© 4', 'μž‘μ„±μž 4', 'λ‚΄μš© 4'); INTO board (title, writer, content) VALUES ('제λͺ© 5', 'μž‘μ„±μž 5', 'λ‚΄μš© 5'); INTO board (title, writer, content) VALUES ('제λͺ© 6', 'μž‘μ„±μž 6', 'λ‚΄μš© 6'); INTO board (title, writer, content) VALUES ('제λͺ© 7', 'μž‘μ„±μž 7', 'λ‚΄μš© 7'); INTO board (title, writer, content) VALUES ('제λͺ© 8', 'μž‘μ„±μž 8', 'λ‚΄μš© 8'); INTO board (title, writer, content) VALUES ('제λͺ© 9', 'μž‘μ„±μž 9', 'λ‚΄μš© 9'); INTO board (title, writer, content) VALUES ('제λͺ© 10', 'μž‘μ„±μž 10', 'λ‚΄μš© 10'); INTO board (title, writer, content) VALUES ('제λͺ© 1', 'μž‘μ„±μž 1', 'λ‚΄μš© 1'); INTO board (title, writer, content) VALUES ('제λͺ© 2', 'μž‘μ„±μž 2', 'λ‚΄μš© 2'); INTO board (title, writer, content) VALUES ('제λͺ© 3', 'μž‘μ„±μž 3', 'λ‚΄μš© 3'); INTO board (title, writer, content) VALUES ('제λͺ© 4', 'μž‘μ„±μž 4', 'λ‚΄μš© 4'); INTO board (title, writer, content) VALUES ('제λͺ© 5', 'μž‘μ„±μž 5', 'λ‚΄μš© 5'); INTO board (title, writer, content) VALUES ('제λͺ© 6', 'μž‘μ„±μž 6', 'λ‚΄μš© 6'); INTO board (title, writer, content) VALUES ('제λͺ© 7', 'μž‘μ„±μž 7', 'λ‚΄μš© 7'); INTO board (title, writer, content) VALUES ('제λͺ© 8', 'μž‘μ„±μž 8', 'λ‚΄μš© 8'); INTO board (title, writer, content) VALUES ('제λͺ© 9', 'μž‘μ„±μž 9', 'λ‚΄μš© 9'); INTO board (title, writer, content) VALUES ('제λͺ© 10', 'μž‘μ„±μž 10', 'λ‚΄μš© 10'); INTO board (title, writer, content) VALUES ('제λͺ© 1', 'μž‘μ„±μž 1', 'λ‚΄μš© 1'); INTO board (title, writer, content) VALUES ('제λͺ© 2', 'μž‘μ„±μž 2', 'λ‚΄μš© 2'); INTO board (title, writer, content) VALUES ('제λͺ© 3', 'μž‘μ„±μž 3', 'λ‚΄μš© 3'); INTO board (title, writer, content) VALUES ('제λͺ© 4', 'μž‘μ„±μž 4', 'λ‚΄μš© 4'); INTO board (title, writer, content) VALUES ('제λͺ© 5', 'μž‘μ„±μž 5', 'λ‚΄μš© 5'); INTO board (title, writer, content) VALUES ('제λͺ© 6', 'μž‘μ„±μž 6', 'λ‚΄μš© 6'); INTO board (title, writer, content) VALUES ('제λͺ© 7', 'μž‘μ„±μž 7', 'λ‚΄μš© 7'); INTO board (title, writer, content) VALUES ('제λͺ© 8', 'μž‘μ„±μž 8', 'λ‚΄μš© 8'); INTO board (title, writer, content) VALUES ('제λͺ© 9', 'μž‘μ„±μž 9', 'λ‚΄μš© 9'); INTO board (title, writer, content) VALUES ('제λͺ© 10', 'μž‘μ„±μž 10', 'λ‚΄μš© 10'); INTO board (title, writer, content) VALUES ('제λͺ© 1', 'μž‘μ„±μž 1', 'λ‚΄μš© 1'); INTO board (title, writer, content) VALUES ('제λͺ© 2', 'μž‘μ„±μž 2', 'λ‚΄μš© 2'); INTO board (title, writer, content) VALUES ('제λͺ© 3', 'μž‘μ„±μž 3', 'λ‚΄μš© 3'); INTO board (title, writer, content) VALUES ('제λͺ© 4', 'μž‘μ„±μž 4', 'λ‚΄μš© 4'); INTO board (title, writer, content) VALUES ('제λͺ© 5', 'μž‘μ„±μž 5', 'λ‚΄μš© 5'); INTO board (title, writer, content) VALUES ('제λͺ© 6', 'μž‘μ„±μž 6', 'λ‚΄μš© 6'); INTO board (title, writer, content) VALUES ('제λͺ© 7', 'μž‘μ„±μž 7', 'λ‚΄μš© 7'); INTO board (title, writer, content) VALUES ('제λͺ© 8', 'μž‘μ„±μž 8', 'λ‚΄μš© 8'); INTO board (title, writer, content) VALUES ('제λͺ© 9', 'μž‘μ„±μž 9', 'λ‚΄μš© 9'); INTO board (title, writer, content) VALUES ('제λͺ© 10', 'μž‘μ„±μž 10', 'λ‚΄μš© 10'); INTO board (title, writer, content) VALUES ('제λͺ© 1', 'μž‘μ„±μž 1', 'λ‚΄μš© 1'); INTO board (title, writer, content) VALUES ('제λͺ© 2', 'μž‘μ„±μž 2', 'λ‚΄μš© 2'); INTO board (title, writer, content) VALUES ('제λͺ© 3', 'μž‘μ„±μž 3', 'λ‚΄μš© 3'); INTO board (title, writer, content) VALUES ('제λͺ© 4', 'μž‘μ„±μž 4', 'λ‚΄μš© 4'); INTO board (title, writer, content) VALUES ('제λͺ© 5', 'μž‘μ„±μž 5', 'λ‚΄μš© 5'); INTO board (title, writer, content) VALUES ('제λͺ© 6', 'μž‘μ„±μž 6', 'λ‚΄μš© 6'); INTO board (title, writer, content) VALUES ('제λͺ© 7', 'μž‘μ„±μž 7', 'λ‚΄μš© 7'); INTO board (title, writer, content) VALUES ('제λͺ© 8', 'μž‘μ„±μž 8', 'λ‚΄μš© 8'); INTO board (title, writer, content) VALUES ('제λͺ© 9', 'μž‘μ„±μž 9', 'λ‚΄μš© 9'); INTO board (title, writer, content) VALUES ('제λͺ© 10', 'μž‘μ„±μž 10', 'λ‚΄μš© 10');
SQL
볡사

ROWID

각 행을 κ³ μœ ν•˜κ²Œ μ‹λ³„ν•˜λŠ”λ° μ‚¬μš©λ˜λŠ” μ‹λ³„μž
ꡬ성 μš”μ†Œ
μ„€λͺ…
였브젝트 번호
ROWIDκ°€ μ†ν•œ 객체(ν…Œμ΄λΈ” λ˜λŠ” ν΄λŸ¬μŠ€ν„°)의 κ³ μœ ν•œ 번호λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
μƒλŒ€ 파일 번호
행이 μ €μž₯된 μƒλŒ€μ μΈ 데이터 파일 번호λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
블둝 번호
행이 μ €μž₯된 데이터 λΈ”λ‘μ˜ 번호λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
데이터 번호
블둝 λ‚΄μ—μ„œμ˜ ν–‰μ˜ μƒλŒ€μ μΈ μœ„μΉ˜λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
β€’
ROWID μ˜ˆμ‹œμ½”λ“œ
SELECT ROWID , employee_id , first_name FROM employees WHERE department_id = 30;
SQL
볡사