728x90
반응형
https://stackoverflow.com/questions/22038570/select-query-vs-view
SELECT VIEW 와 SELECT TABLE 의 속도 차이 때문에.
회사에서 개발할 때에 처음에 view에 대한 정확한 이해 없이 접근 - 왜 뷰는 속도가 안날까?
VIEW 는 물리적 저장소에 데이터를 넣지 않는다.
다음 답변을 보면 알 수 있듯이.
실행 시, query definition 을 참조해서 expanded out 한다! view 에 담긴 데이터라고 착각했는데, 실상은
LEFT JOIN VIEW_TEMP1;
과 같이 사용할 경우 view 의 데이터를 직접 가져오는게 아닌 VIEW_TEMP1 의 definition을 실행해서 다시 구성해서 데이터를 가져온다.
그러므로, 간단하고 가벼운 view 의 경우 속도 차이가 안나겠지만.
view 가 여러군데 join을 걸고 있고, 속도가 느리다면 LEFT JOIN을 굳이 하지 말자.
+ 추가로 VIEW 구성시, 원천 테이블의 인덱스를 제대로 살리지 못하거나, SUM 과같은 집계 함수를 여러군데에 쓰는 등, 작업이 걸리면
VIEW 데이터 자동 반영이 어렵다.
View는 쿼리를 통한 정의 (논리적) 테이블처럼 쓸 뿐이다.
직접 확인하고 싶다면, 단순히
SELECT
* -- 좋은 습관이 아니라고 함.
FROM temp.VIEW_TEMP1;
과 같이 작성하고 실행계획을 떠보면 된다.
실행계획에 view 를 정의한 definition이 포함된 것을 볼 수 있다.
320x100
반응형
'DB' 카테고리의 다른 글
[DB] Decode vs Case when (0) | 2024.05.21 |
---|---|
[DB] VERTICA ifnull coalesce (0) | 2024.02.29 |
[DB] postgresql recursive 재귀쿼리 (0) | 2023.12.07 |
[DB] postgresql TEXT vs VARCHAR vs JSON 타입은 언제 써야하나? (1) | 2023.11.22 |
[DB] MySQL CURRENT_TIMESTAMP (0) | 2023.10.05 |