Grafana의 대시보드에 2개의 변수를 생성하였습니다.
[종목명/코드]에 입력된 값을 [검색 구분]의 선택값에 따라 서로 다른 컬럼을 검색하는 쿼리 입니다.
where 절에 case when으로 조건을 지정할 수 있습니다.
select stock_code, stock_name, stock_type, last_collect_event_date
from tbl_coporation_info_kor
where (case when '$search_type' = '종목코드' then stock_code = '$search_code'
else stock_name like '%$search_code%' end)
limit 100;
위 쿼리는 동작은 되지만 실행계획을 보면 stock_code, stock_name에 해당하는 index가 존재하지만 table scan이 발생합니다.
🔹 인덱스를 사용하도록 개선된 코드
select stock_code, stock_name, stock_type, last_collect_event_date
from tbl_coporation_info_kor
where ('$search_type' = '종목코드' and stock_code = '$search_code')
or ('$search_type' = '종목명' and stock_name like '%$search_code%')
limit 100;
실행계획을 확인해 보면 인덱스를 이용하고 있습니다.