์ฌ๋ถ ์์ฑ์ผ๋ก ์ธํ ๋ ๋ฒ์งธ ์ฑ๋ฅ ์ ํ ์ฌ๋ก๋ฅผ ์ดํด๋ณด์.
ํ ์คํธ๋ฅผ ์ํด ์๋์ ํ ์ด๋ธ์ ์์ฑํ์. t1 ํ ์ด๋ธ์ ๊ณ ๊ฐ๋ณ ์ํ ์กฐํ ์ด๋ ฅ ํ ์ด๋ธ๋ก ๊ฐ์ ํ์.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
-- 1-1 DROP TABLE t1 PURGE; CREATE TABLE t1 AS SELECT 1 AS id , ROWNUM AS cd , DATE '2050-01-01' - NUMTODSINTERVAL (ROWNUM, 'MINUTE' ) AS dt , 'N' AS del_yn FROM XMLTABLE ( '1 to 144000' ); ALTER TABLE t1 ADD CONSTRAINT t1_pk PRIMARY KEY (id, cd, dt); -- 1-2 UPDATE t1 SET del_yn = 'Y' WHERE id = 1 AND dt < DATE '2049-12-31' - 30; COMMIT ; |
๊ณ ๊ฐ์ด 2050-01-01์ ๋ก๊ทธ์ธํ๋ฉด ์๋ ์ฟผ๋ฆฌ๊ฐ ์ํ๋๋ค. 30์ผ ์ด์ ์ ์ํ ์กฐํ ์ด๋ ฅ์ ๋ ผ๋ฆฌ์ ์ผ๋ก ์ญ์ ํ๋ ์ฒ๋ฆฌ๋ค.
1 2 3 4 5 |
-- 2 UPDATE t1 SET del_yn = 'Y' WHERE id = 1 AND dt < DATE '2050-01-01' - 30; |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
-- 3 SELECT del_yn FROM t1 WHERE id = 1 AND dt < DATE '2050-01-01' - 30; ---------------------------------------------------------------- | Id | Operation | Name | A- Rows | Buffers | ---------------------------------------------------------------- | 0 | SELECT STATEMENT | | 100K| 1045 | | 1 | TABLE ACCESS BY INDEX ROWID| T1 | 100K| 1045 | |* 2 | INDEX RANGE SCAN | T1_PK | 100K| 623 | ---------------------------------------------------------------- |
์ ๋ฌด์ ์ผ๋ก ๊ณผ๊ฑฐ ๋ฐ์ดํฐ๋ ์ด๋ฏธ ๋ ผ๋ฆฌ ์ญ์ ๊ฐ ๋ ์ํ์ด๋ฏ๋ก ์๋์ ๊ฐ์ด del_yn = 'N' ์กฐ๊ฑด์ ์ถ๊ฐํ์ฌ ๊ฐฑ์ ๋์์ ์ค์ผ ์ ์๋ค. ๋ถํ์ํ ๊ฐฑ์ ์ ๋ฐฉ์งํจ์ผ๋ก์จ ๋ก๊น ๋ถํ๊ฐ ๊ฐ์ํ์ง๋ง ๋ธ๋ก I/O๋ ์ฌ์ ํ ๋๋ค. 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
-- 4 SELECT del_yn FROM t1 WHERE id = 1 AND dt < DATE '2050-01-01' - 30 AND del_yn = 'N' -- ์ถ๊ฐ ; ---------------------------------------------------------------- | Id | Operation | Name | A- Rows | Buffers | ---------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1440 | 848 | |* 1 | TABLE ACCESS BY INDEX ROWID| T1 | 1440 | 848 | |* 2 | INDEX RANGE SCAN | T1_PK | 100K| 524 | ---------------------------------------------------------------- |
1 2 3 4 |
-- 5 CREATE INDEX t1_x1 ON t1 (id, del_yn, dt); ์ธ๋ฑ์ค๊ฐ ์์ฑ๋์์ต๋๋ค. |
์ฟผ๋ฆฌ๋ฅผ ๋ค์ ์ํํ๋ฉด ๋ธ๋ก I/O๊ฐ 9๋ก ๊ฐ์ํ ๊ฒ์ ํ์ธํ ์ ์๋ค.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
-- 6 SELECT del_yn FROM t1 WHERE id = 1 AND dt < DATE '2050-01-01' - 30 AND del_yn = 'N' ; ---------------------------------------------------- | Id | Operation | Name |A- Rows | Buffers | ---------------------------------------------------- | 0 | SELECT STATEMENT | | 1440 | 9 | |* 1 | INDEX RANGE SCAN| T1_X1 | 1440 | 9 | ---------------------------------------------------- |
- ์ผ์ ์ ์ธ๊ธํ ์ํํญํ ์ ํ์ด๋ค. [๋ณธ๋ฌธ์ผ๋ก]
- 1๋ถ์ 1๊ฐ์ ์ํ์ ์กฐํํ๊ณ 1์ผ์ 1ํ ๋ก๊ทธ์ธํ๋ค๊ณ ๊ฐ์ ํ๋ฉด ๊ฐฑ์ ๋์์ด ์ต๋ 1440๊ฑด์ด๋ค. [๋ณธ๋ฌธ์ผ๋ก]
'Oracle > Tuning' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ฟผ๋ฆฌ ๋ณํ์ ํตํ Top-N ์ฟผ๋ฆฌ ์ฑ๋ฅ ๊ฐ์ ์ฌ๋ก (0) | 2020.09.16 |
---|---|
์ฌ๋ถ ์์ฑ์ผ๋ก ์ธํ ์ฑ๋ฅ ์ ํ ์ฌ๋ก #1 (0) | 2020.07.08 |
๋ทฐ ๋ณํฉ์ด ๋์ํ์ง ์๋ ์ฌ๋ก (0) | 2020.04.07 |
์กฐ์ธ์ ๋ฐ๋ฅธ ์ฌ์ฉ์ ํจ์์ ๋์ (0) | 2020.03.21 |
์ ๊ธฐ์ค ์ด๋ ฅ ์กฐํ (0) | 2020.03.16 |