https://oneny.tistory.com/11 에서 쿼리 조회하는데 *(asterisk)를 사용하면 좋지 않다고 얘기했는데
얼마나 영향이 있는지 직접 테스트해보자.
*(asterisk)를 사용하여 조회한 경우
SELECT *
FROM sales s, products p, users u
WHERE s.barcode = p.barcode AND s.user_id = u.id;
매출(Sales) 테이블에서 barcode를 통해 판매상품(products) 테이블과 JOIN을 하고, 사용자 테이블은 user_id를 통해 JOIN하는 쿼리이다.
쿼리 결과
쿼리 결과로 30,204 레코드를 반환하는데 4.355s가 걸렸다.
barcode와 user_id만 조회한 경우
SELECT s.barcode, u.name
FROM sales s, selling_products se, users u
WHERE s.barcode = se.barcode AND s.user_id = u.id;
위와 같은 쿼리인데 바코드와 사용자 이름만 조회한 경우이다.
쿼리 결과
30,204개의 레코드 반환하는데 100ms와 걸렸고, *(asterisk)를 사용한 경우와 큰 차이를 보였다. *를 사용한 경우 거의 30개 넘는 컬럼이라 컬럼 개수가 좀 많이 차이있긴 하지만 그래도 *를 지양하는 좋다는 것을 눈으로 확인할 수 있었다.
결론은 *(asterisk)는 정말 지양해야겠다....
'DB > DB 문법' 카테고리의 다른 글
쿼리 실행 순서 (1) | 2023.05.18 |
---|---|
조건식(Conditional Expressons) (0) | 2023.05.18 |
데이터베이스 및 테이블 생성 (0) | 2023.05.18 |
JOINS와 집합 연산자 (0) | 2023.05.16 |
서브쿼리(Sub Query) (1) | 2023.05.16 |