-
VARCHAR를 255자 넘게 잡으면 느려질까?
컬럼 길이를 100자에서 1000자로 늘려 달라는 요청에 "255자를 넘기면 성능이 달라진다"는 말이 나왔습니다. MariaDB 11.4.2에서 재 보니 255는 글자가 아니라 바이트에 붙은 숫자였고, 실행 시간을 가르는 선은 메모리 임시 테이블이 감당하는 512자에 있었습니다.
-
collation이 뭐길래 조인만 실패할까?
이력 테이블을 코드 테이블과 조인하지 못해 데이터팀 작업이 막혔습니다. 원인은 collation 불일치였습니다. collation이 문자 집합과 무엇이 다른지, 왜 컬럼끼리 비교할 때만 Illegal mix of collations가 나는지, 그리고 한국어와 코드 값을 다루는 곳에서 utf8mb4_general_ci를 컨벤션으로 두면 무엇이 나은지 정리했습니다.
-
억울한 EXISTS, 정말 IN보다 느릴까?
EXISTS를 IN으로 바꾸면 빨라진다는 통념을 따져봅니다. 성능 개선과 원인 입증은 다른 문제라는 것, 그리고 동등한 서브쿼리 IN과 EXISTS가 현대 MySQL에서 같은 최적화 후보가 되는 것을 로컬 실측으로 확인합니다.