훌륭해요!
정답률 90%
문제별 결과
SQL에서 EXPLAIN은 쿼리를 실제로 실행한다.
EXPLAIN은 쿼리 실행 계획만 보여주며 실제로 쿼리를 실행하지 않습니다(일부 DB는 EXPLAIN ANALYZE로 실행).
SQL에서 DECIMAL과 FLOAT는 동일한 정밀도를 가진다.
DECIMAL은 정확한 소수점 계산을 보장하고, FLOAT는 부동소수점으로 근사값을 저장합니다. 금액 계산에는 DECIMAL을 사용합니다.
SQL에서 서브쿼리는 항상 JOIN보다 느리다.
서브쿼리의 성능은 상황에 따라 다릅니다. 옵티마이저가 서브쿼리를 JOIN으로 변환하기도 하며, 때로는 서브쿼리가 더 빠를 수 있습니다.
SQL에서 정규화(Normalization)는 데이터 중복을 줄이기 위한 설계 기법이다.
1NF, 2NF, 3NF 등의 정규형으로 데이터 중복과 이상 현상을 줄입니다.
SQL에서 CTE(Common Table Expression)는 WITH 절로 정의한다.
WITH cte AS (SELECT ...) SELECT * FROM cte 형태로 복잡한 쿼리를 가독성 있게 작성합니다.
SQL에서 Deadlock은 두 트랜잭션이 서로의 잠금을 기다리는 상태이다.
T1이 A를 잠그고 B를 기다리고, T2가 B를 잠그고 A를 기다리면 교착 상태가 발생합니다.
SQL에서 Window Function(OVER)은 GROUP BY 없이 집계를 수행할 수 있다.
ROW_NUMBER() OVER(PARTITION BY dept ORDER BY salary DESC)처럼 그룹핑 없이 각 행에 집계값을 추가합니다.
SQL의 HAVING 절에서는 집계 함수를 사용할 수 있지만 WHERE 절에서는 사용할 수 없다.
WHERE는 행 단위 필터링, HAVING은 그룹 단위 필터링입니다.
SQL에서 Prepared Statement는 성능상 이점이 없다.
Prepared Statement는 쿼리 파싱과 실행 계획을 캐시하여 반복 실행 시 성능이 향상됩니다. SQL Injection 방지도 됩니다.
SQL에서 트랜잭션의 ISOLATION LEVEL은 성능에 영향을 주지 않는다.
높은 격리 수준은 더 많은 잠금을 필요로 하여 성능이 저하됩니다. READ UNCOMMITTED가 가장 빠르지만 더티 리드가 발생합니다.