본문 바로가기

sql

DATE_FORMAT 검색의 위험성 SELECT idx FROM t_a WHERE DATE_FORMAT(reg_date, '%Y%m%d') = '2021-03-02' GROUP BY idx; t_a 테이블에 row수는 7천만개가 넘은 상태였다. 어마어마한 row수를 가진 테이블에 위 쿼리를 실행하니 쿼리문이 영원히(!) 실행 되다시피 했다. 그 이유는 WHERE 절..! 'reg_date' 컬럼의 포맷은 YYYY-MM-DD HH:MM:SS 해당 포맷을 변경 후 위 쿼리와 같이 검색을 하게되니 'reg_date' 컬럼을 Like 검색으로 변환되어 모든 컬럼을 샅샅이 조사(?)하기 시작한거 같다. row수가 얼마 안된다면 모르겠지만 row수가 많다면 아래와 같이 검색을 하자..! SELECT idx FROM t_a WHERE reg_date .. 더보기
WHERE QUERY Performance Tuning 출처: https://link2me.tistory.com/544 WHERE 절은 "테이블내의 모든 행을 검색하는 대신 검색 조건을 지정하여 사용자가 원하는 행들만 검색하는 기능"이다. WHERE 조건식은 단일 조건식과 복수 조건식이 있다. 연산자 의 미 = 같다 WHERE 품목 = '구두' ; > 보다 크다 >= 보다 크거나 같다 더보기
영문, 숫자, 한글 순으로 데이터 출력 쿼리문 쿼리문에서 아래의 쿼리문을 넣으면 영문, 숫자, 한글로 뒤섞여있는 필드가 영문 -> 숫자 -> 한글 순으로 데이터를 뽑아져 나오는 것을 볼 수 있다. 예) "SELECT * FROM 테이블 ORDER BY (CASE WHEN '필드1' REGEXP '[A-Z]' THEN '필드1' REGEXP '[0-9]' ELSE '필드1' NOT REGEXP '[A-Z]' END), '필드1' ASC(또는 DESC)" 더보기