Search

Paging SQL

Image
ํ™”๋ฉด ์บก์ฒ˜ 2022-01-25 135549.jpg
Category
Language
Start.Date
2022/01/26
End.Date
2022/01/26
Member

Paging

๋‚ด๋ˆˆ์—๋งŒ ๋ณด์ด๋ฉด ๋ผ !

Database Paging

์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด์˜ค๋Š” ๊ณณ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์–ด๋–ป๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด์˜ฌ๊นŒ ? SQL๋กœ....

๊ฒŒ์‹œํŒ ํ…Œ์ด๋ธ”๋กœ ํ…Œ์ŠคํŠธ ํ•ด๋ณด์ž

create table board_content( -- ๊ฒŒ์‹œ๊ธ€ ๋ฒˆํ˜ธ num SERIAL not null, -- ๊ฒŒ์‹œ๊ธ€ ์ œ๋ชฉ title VARCHAR not null, -- ๊ฒŒ์‹œ๊ธ€ ๋‚ด์šฉ content VARCHAR not null, -- ๋“ฑ๋ก ์ผ์ž create_date VARCHAR not null, -- ์ˆ˜์ • ์ผ์ž update_date VARCHAR not null, --์กฐํšŒ ์ˆ˜ view_cnt INT not null ); SELECT COUNT(*) FROM board_content count | -------+ 3021033|
SQL
๋ณต์‚ฌ

PostgreSQL/Mysql/Mariadb/CUBRID Style Paging SQL

๊ฒŒ์‹œ๊ธ€ ์ „์ฒด ์กฐํšŒ ํ•ด๋ณด์ž

SQL
Plan
Result
Problem
Solution

๊ฒŒ์‹œ๊ธ€ 10๊ฑด๋งŒ ๊ฐ€์ ธ์™€๋ณด์ž

SQL
Plan
Result
Problem
Solution

๊ฒŒ์‹œ๊ธ€ 10๊ฑด๋งŒ ๊ฐ€์ ธ์™€๋ณด์ž (์ˆœ์„œ ๋ณด์žฅ O)

SQL
Plan
Result
Problem
Solution

๊ฒŒ์‹œ๊ธ€ 10๊ฑด๋งŒ ๋น ๋ฅด๊ฒŒ ๊ฐ€์ ธ์˜ค์ž (์ˆœ์„œ ๋ณด์žฅ O, ์†๋„ ๋ณด์žฅ O)

SQL
Plan
Result
Problem
Solution

num ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ 20๊ฑด์„ 10๊ฑด์”ฉ ๋‚˜๋ˆ ์„œ ๋ณด์ž (ํŽ˜์ด์ง• ๋ณด์žฅ O)

SQL
Plan
Result
Problem
Solution

๊ฒŒ์‹œ๊ธ€ ์ˆ˜์ • ์ผ์ž ๊ธฐ์ค€์œผ๋กœ ์ถœ๋ ฅ ํ•˜์ž (์ˆœ์„œ ๋ณด์žฅ, ์†๋„ ๋ณด์žฅ)

SQL
Plan
Result
Problem
Solution

ORACLE/TIBERO Style Paging SQL

๊ฒŒ์‹œ๊ธ€ 10๊ฑด๋งŒ ๊ฐ€์ ธ์™€๋ณด์ž

SQL
Plan
Result
Problem
Solution

๊ฒŒ์‹œ๊ธ€ 10๊ฑด๋งŒ ๊ฐ€์ ธ์™€๋ณด์ž (์ˆœ์„œ ๋ณด์žฅ X, ์†๋„ ๋ณด์žฅ O)

SQL
Plan
Reuslt
Problem
Solution

๊ฒŒ์‹œ๊ธ€ 10๊ฑด๋งŒ ๊ฐ€์ ธ์™€๋ณด์ž (์ˆœ์„œ ๋ณด์žฅ O, ์†๋„ ๋ณด์žฅ O)

SQL
Plan
Result
Problem
Solution

๊ฒŒ์‹œ๊ธ€ 10๊ฑด๋งŒ ๊ฐ€์ ธ์™€๋ณด์ž (์ˆœ์„œ ๋ณด์žฅ O, ์†๋„ ๋ณด์žฅ O)

SQL
Plan
Result
Problem
Solution

์‘์šฉ ํ•˜๊ธฐ

2021๋…„ ์ดํ›„ ์ƒ์„ฑ(create_date) ๋œ ๊ฒŒ์‹œ๊ธ€ ์ค‘ ๊ฒŒ์‹œ๊ธ€ ์—…๋ฐ์ดํŠธ(update_date) ์ตœ์‹  ์ˆœ์œผ๋กœ 10๊ฑด ์ •๋ ฌ

LIMIT Style

SQL
Plan
Result

Rownum Style

SQL
Plan
Result

OFFSET ROW FETCH Style

SQL
Plan
Result

์ถฉ๋ถ„ํžˆ ๋น ๋ฅธ๋ฐ... ๋” ๋น ๋ฅด๊ฒŒ ํ•˜๊ณ  ์‹ถ๋‹ค!

๋ฉ”๋ชจ๋ฆฌ์—์„œ๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋ฉด ์–ด๋–ค ํšจ๊ณผ๊ฐ€ ์žˆ์„๊นŒ ?

SELECT * FROM ( SELECT /*+ RESULT_CACHE */ * FROM board_content ORDER BY title ) test WHERE ROWNUM <= 10;
SQL
๋ณต์‚ฌ
Total elapsed time 00:00:01.095000 Execution Plan -------------------------------------------------------------------------------- 1 RESULT CACHE (Cost:50336, %%CPU:0, Rows:10) 2 ORDER BY (SORT) TOP-N (Cost:50336, %%CPU:0, Rows:10) 3 TABLE ACCESS (FULL): BOARD_CONTENT (Cost:16099, %%CPU:0, Rows:3027390) Note -------------------------------------------------------------------------------- 3 - dynamic sampling used for this table (98 blocks) NAME VALUE ------------------------------ ---------- db block gets 620 consistent gets 38570 physical reads 0 redo size 0 sorts (disk) 0 sorts (memory) 4 rows processed 10
SQL
๋ณต์‚ฌ
Total elapsed time 00:00:00.005849 Execution Plan -------------------------------------------------------------------------------- 1 RESULT CACHE (Cost:50336, %%CPU:0, Rows:10) 2 ORDER BY (SORT) TOP-N (Cost:50336, %%CPU:0, Rows:10) 3 TABLE ACCESS (FULL): BOARD_CONTENT (Cost:16099, %%CPU:0, Rows:3027390) Note -------------------------------------------------------------------------------- 3 - dynamic sampling used for this table (98 blocks) NAME VALUE ------------------------------ ---------- db block gets 0 consistent gets 0 physical reads 0 redo size 0 sorts (disk) 0 sorts (memory) 0 rows processed 10
SQL
๋ณต์‚ฌ

๋ฉ”๋ชจ๋ฆฌ์—์„œ๋งŒ ๊ฐ€์ ธ์˜ค์ž (์‚ฌ์šฉ ์กฐ๊ฑด : ์กฐํšŒ ๊ฒฐ๊ณผ๋ฅผ ๋ฏธ๋ฆฌ Query Result Cache์— ๋ณด๊ด€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž์ฃผ ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ธฐ์ค€)

SQL
Plan
Result