한 테이블에서 필드 타입을 text 가 아닌 mediumtext를 사용하고 있었습니다.
처음에는 괜찮았는데 어느 순간 테이블에 데이터가 쌓이면서 단순 select 쿼리도 속도가 너무 느리다는걸 느꼈습니다.
예) 초반 0.5초 -> 현재 1분 44초...
그래서 여러가지를 분석해봤습니다.
단순 raw query 에 대한 문제인지 아닌지 부터 시작해봤죠...
기본적으로 vscode에서 다루는 orm 은 sequelize 이용하고 있어서
이걸로, sequelize 쿼리 / raw 쿼리 둘다 진행 해봤는데 속도는 매우 빠르게 나왔습니다.
그러나, DB에서 raw 쿼리를 진행하면 1분 넘도록 실행하더군요...

왜 orm은 빠른데 DB 프로그램은 느리냐!!! 라는 걸 봤는데
sequelize-auto를 써서 db 모델을 가져오면 mediumtext는 데이터 타입을 text로 퉁치더라구요.
그래서 혹시??? 하는 마음에 보니, db 프로그램에서 쿼리 진행 시에는 mediumtext 자체 인식을 하고
orm은 text로 맵핑되어있는걸로 인식되어서 빠르더라구여 (쌓이는게 좀 있어서 mediumtext를 쓸수밖에 없는 상황)
그래서 결론은, mediumtext를 못쓸거면 쿼리 진행 시 강제 변환을 하자!! 라고 결론 내렸습니다.
SELECT field1, field2, CONVERT(field3, CHAR(65535)) AS field3 FROM table WHERE id = 2;
해당 쿼리처럼 convert를 이용해서 오래걸리는 필드 타입을 강제로 text 변환하니 orm 과 똑같은 속도로 진행하더군요.

개비스콘 먹은거 처럼 마음이 편안해 졌습니다.
'잡다한 지식' 카테고리의 다른 글
[SPF] SPF 레코드 (0) | 2024.11.12 |
---|---|
[SEQUELIZE] create와 bulkCreate (0) | 2024.11.04 |
[JS] 문제 있는 url 주소 찾기 (1) | 2024.10.22 |
[SQL] tinyint 타입에 대한 인덱싱 작업 (2) | 2024.09.26 |
[SQL] WITH 쿼리 (1) | 2024.09.09 |