p.206

Screenshot_20240321_130435_Adobe Acrobat.jpg

원진

Q1. X01인덱스 스캔을 IN-List Iterator 방식으로 유도하면 성능향상에 도움이 될까?

A1. X01 인덱스가 사용된 현쿼리에 대해서 IN-List Iterator방식으로 쿼리변환은 도움이 안된다.

-- PK (상품ID)
-- X01 (상품ID, 상품구분코드)
-- 원본쿼리
SELECT * FROM 상품
WHERE 상품ID = :prod_id
AND    상품구분코드 IN ( 'GX', 'KR' )
-- PK (상품ID)
-- X01 (상품ID, 상품구분코드)
-- IN-List Itertator 쿼리변환
SELECT * FROM 상품
WHERE 상품ID = :prod_id
AND    상품구분코드 = 'GX'
UNION ALL
SELECT * FROM 상품
WHERE 상품ID = :prod_id
AND    상품구분코드 = 'KR'

Q2. X01 인덱스를 ( 상품구분코드, 상품ID )로 변경하면 성능향상에 도움이 될까?

A2. 도움이 안된다.

-- 변경된X01 ( 상품구분코드 + 상품ID )
-- 원본쿼리
SELECT * FROM 상품
WHERE 상품구분코드 IN ( 'GX', 'KR' )
AND   상품ID = :prod_id
-- 변경된X01 ( 상품구분코드 + 상품ID )
-- IN-List Itertator 쿼리변환
SELECT * FROM 상품
WHERE 상품구분코드 = 'GX'
AND    상품ID = :prod_id
UNION ALL
SELECT * FROM 상품
WHERE 상품구분코드 = 'KR'
AND    상품ID = :prod_id