트랙 전체 모듈에서 무작위로 출제됩니다. 80% 이상 맞히면 통과이며, 통과 시 수료증이 발급됩니다.
Q1 / 15
users 테이블 1억 건에서 WHERE email = 'user@example.com' 을 조회한다. email 컬럼에 B-Tree 인덱스가 없을 때와 있을 때의 차이를 가장 잘 설명한 것은?
Q2 / 15
아래 코드를 실행했더니 같은 트랜잭션 안에서 SELECT를 두 번 했는데 결과가 달랐습니다. PostgreSQL 기본 설정에서 이것이 가능한 이유는?
BEGIN;
SELECT count(*) FROM orders WHERE status = 'pending'; -- 결과: 10
-- (다른 트랜잭션이 pending 주문 3건을 처리해서 COMMIT)
SELECT count(*) FROM orders WHERE status = 'pending'; -- 결과: 7
COMMIT;
Q3 / 15
SELECT * FROM orders WHERE status = 'PENDING'이 수천 건 테이블에서 느리다. EXPLAIN을 실행했더니 type: ALL이 나왔다. 무엇이 문제이고 어떻게 해결하는가?
Q4 / 15
아래 쿼리를 users 1만 건 테이블에 실행했더니 EXPLAIN 결과 orders 테이블을 1만 번 조회했다. 왜 그런가?
```sql
SELECT u.name,
(SELECT COUNT(*) FROM orders o WHERE o.user_id = u.id) AS order_count
FROM users u
```
Q5 / 15
[심화] 메타데이터만 바꿔 밀리초면 끝날 ALTER TABLE ADD COLUMN(nullable, DEFAULT 없음)을 운영 중 실행했더니, 그 순간 해당 테이블을 읽는 모든 조회까지 함께 멈췄다. 가장 큰 이유는?
Q6 / 15
같은 스키마 변경을 Oracle, PostgreSQL, MySQL 세 환경에 모두 배포해야 한다. SQL 방언(dialect) 차이 때문에 환경마다 다른 SQL을 유지하기 어렵다. 하나의 변경 정의로 여러 DB를 지원하고 싶다면 어떤 도구가 더 적합한가?
Q7 / 15
[심화] ERD의 1:N 관계선을 FK로 구현할 때, N쪽(자식)의 FK 컬럼에 별도로 인덱스를 만들어 주는 것이 중요한 이유는?
Q8 / 15
psql로 운영 DB에 접속 후 마이그레이션이 제대로 적용됐는지 확인하려 합니다. 현재 데이터베이스의 모든 테이블 목록을 보고, users 테이블의 컬럼 구조를 확인하는 올바른 명령 순서는?
Q9 / 15
주문 내역 조회와 사용자 조회를 자주 INNER JOIN해야 하는 서비스에서 가장 적합한 DB는?
Q10 / 15
저장 프로시저(SP)의 현대 개발에서 주요 단점은?
Q11 / 15
[심화] 대량 UPDATE를 청크로 나눠 문제없이 끝냈는데, 이후 그 테이블 조회가 전보다 느려졌다. 원인을 확정하려고 가장 먼저 볼 것은?
Q12 / 15
Replica의 복제 지연(replication lag)을 운영 중 직접 확인하려면?
Q13 / 15
복합 기본키(Composite Primary Key)를 사용하기 가장 적합한 경우는?
Q14 / 15
EXPLAIN ANALYZE 출력에서 'rows=1000000 (actual rows=3)'라면 어떤 문제가 있는가?