레코드를 조회하는 중에..
시간이 너무 오래걸리는 문제에 부딪혔는데요..
원인을 찾던 중.. 이런 현상이 나타났습니다.
A Table 갯수 조회 - 420개 : 1분 01초..
B Table 갯수 조회 - 600개 : 38초..
SQL : Select Count(*) From A(or B)
or
SQL : Select Count(FieldName) From A(or B) - 이 경우도 레코드 수 많은 것이 짧은 시간 소요됨..
FieldType 중에 Blob Type이 있어서..데이터가 들어가는데요..
혹시 그것이 영향을 미치는 건지..
count 수를 셀때 무엇을 가지고 세는지..알고 싶습니다..
더불어서..
BlobType 데이터들이 많이 들어간 테이블일 경우에..
Blob 데이터의 사이즈가 큰 데이터 들이 많을수록
쿼리하는데 오랜 시간이 걸리나요??
답변 부탁드립니다..ㅠ.ㅠ
레코드수가 420,600 인가요? 레코드수에 비해 시간이 너무 많이 걸리는군요.
요즘엔 어떨런지 모르겟는데, 예전에(몇년쯤전에...) BLOB컬럼이 있으면 데이터질의시 시간이 넘 올래걸렸던 기억이 있습니다. 그래서 그 이후부터는 절대 BLOB컬럼을 안썼습니다. ^^
꼭 BLOB (or Text) 컬럼이 필요하다면 테이블을 나누었습니다. a 테이블에는 일반적인 컬럼타입으로 구성하고 일련번호를 하나 두고요... b 테이블에는 a 테이블의 일련번호와 BLOB가 들어가고요. 차라리 질의를 두번하는게 속도면에서는 훨씬 이득일껍니다.
count(*) 는 보통 db 서버에서 옵티마이즈 됩니다. (물론 db서버가 하냐 안하냐에 따르겟지만요..웬만한 RDBMS는 다 옵티마이즈를 하는것으로 알고 있습니다.)
count(fieldname)은 index 를 탑니다.
아무래도 BOLB때문일것 같기도 합니다. select * ~ 으로 데이터를 질의 하는데 소요되는 시간을 체크해보시죠.. 한두건 , 10~20건, 100~건 정도씩 단순 select 로 질의해보셔요..
그리고 BLOB컬럼을 drop 한다음 테스트 해보시구요.
(솔직히 옵티마이즈가 안되고 테이블 풀스캔을 한다고 해도...저정도의 row 수면 0.01초 안에 떨어져야겟죠..)
그럼...행운을...
(아 BLOB 컬럼을 drop 한다음 테스트 하시면..결과좀 올려주세요... ^^ 저도 궁금해용)