Ms-SQL은 아주쉽게 확인이 가능한데, postgresql는 좀 어렵네요. T.T
explain analyze select * from t_student
where mid = 'scall'
And saupjangc = '01'
And stu_c > 10020000
And stu_n <> '' 의 결과가 아래처럼 나왔는데, 인덱스 안타는거 맞죠?
위 조건 컬럼 모두 인덱스를 걸었는데 걸기전하고 조회속도가 같네요..
"Seq Scan on t_student (cost=0.00..1151.92 rows=26199 width=582) (actual time=0.025..29.773 rows=26133 loops=1)"
" Filter: ((stu_c > 10020000) AND ((stu_n)::text <> ''::text) AND ((mid)::text = 'scall'::text) AND ((saupjangc)::text = '01'::text))"
"Total runtime: 31.580 ms"
뭐가 어떻게 잘못된건가요? 컬럼 타입은,
mid character varying(20) NOT NULL,
saupjangc character varying(2) NOT NULL,
stu_c bigint NOT NULL DEFAULT nextval('student_idx'::regclass),
stu_n character varying(30) NOT NULL,
입니다.
그리고 위 쿼리가 어느땐 1/10 정도로 빨라졌다가 또 어느땐 10배 느려졌다 하는건 왜죠?
로컬 PC의 DB이니 네트웍 속도도 아닌데...
인덱스를 탔다가 안탔다가 하는거 같네요.
|