안녕하세요, 늘 도움 많이 받고 있습니다.
오늘도 오라클 인덱스에 대해 몇가지 도움 받았으면 해서 올립니다.
OS 는 centos5.5(windows server 2003 을 쓰기도 합니다.)
오라클은 10g XE 를 씁니다.
튜닝 대상은 다음 테이블이라고 할게요.
CREATE TABLE Persons
(
id NUMBER NOT NULL,
lastName NVARCHAR2(50) NOT NULL,
fistName NVARCHAR2(50) NOT NULL,
size NUMBER NOT NULL,
PRIMARY KEY(id)
)
id 는 순차적으로 증가하는 고유키고, 식별자로서의 역할 외에 다른 역할은 없습니다.
1. count(*) vs count(PK) 다음 각 상황에 대해 레코드 수를 세기 위한 쿼리인
SELECT count(*) FROM Persons ... 에서 count(*) 와 count(id) 중 어느것이 빠를까요?
a. 조건절이 없고 PK 외 인덱스가 없을때
b. 조건절이 있고 PK 외 인덱스가 없을때
c. 조건절이 있고 조건절에 대한 인덱스가 있을때
2. 조회용 컬럼에 인덱스튜닝하고 싶은 쿼리는 다음 두개입니다.
SELECT size
FROM Persons
WHERE lastName = 'Goo'
AND firstName = 'Hara'
UPDATE Persons
SET size = size + 2
WHERE lastName = 'Goo'
AND firstName = 'Hara'
성이 같은 경우가 많을테니 lastName, firstName 순으로 인덱스로 걸고
SQL Server 라면 조회용 컬럼인 size 를 include 로 다음처럼 추가해줄텐데요..
CREATE NONCLUSTERED INDEX IX_Persons ON Persons
(lastName, firstName) INCLUDE (size)
오라클에선 어떻게 하는게 좋을까요?
3. 인덱스 마법사? 프로필러?
SQL Server 의 인덱스 튜닝 마법사(관리자) 같은 툴이 오라클에도 있나요?
특정 쿼리에 대한 권정 인덱스 구성이 뭔지 확인 할 수 있어 상당히 요긴하게 썼었는데..
부하를 유발하는 넘이 뭔지 프로필러 같은거로 확인 하고 싶은데 없는 거 같에서
그냥 웹어드민에서 최상위SQL인가요? 그걸로 대충 확인하고 있습니다만..
정석이 따로 있는지 궁금해서요.
읽어주셔서 감사합니다~