통계 갱신(옵티마이저용)
Oracle
EXEC DBMS_STATS.GATHER_TABLE_STATS('HR', 'EMPLOYEE');
-- Whole schema: EXEC DBMS_STATS.GATHER_SCHEMA_STATS('HR');AUTO 작업이 보통 야간에 수집한다. 문제가 생기면 수동으로 수집한다. ESTIMATE_PERCENT=>AUTO_SAMPLE_SIZE가 권장된다.
PostgreSQL
ANALYZE customer;
-- Both cleanup and analyze: VACUUM ANALYZE customer;Autovacuum이 자동으로 수행한다. 대량 데이터 적재 직후에는 수동 ANALYZE를 실행해야 정확한 실행 계획이 나온다.
MySQL
ANALYZE TABLE customer;InnoDB에서 짧은 읽기 락을 건다. 대형 테이블은 활동이 적은 시간에 실행한다.
SQL Server
UPDATE STATISTICS dbo.customer WITH FULLSCAN;
-- Whole database: EXEC sp_updatestats;FULLSCAN이 가장 정확하지만 비용이 가장 크다. 대형 테이블에서는 샘플링(SAMPLE)이 나을 수 있다.
MongoDB
// There are no manual statistics; the planner measures at runtime.
// To clear a stale plan cache:
db.customer.getPlanCache().clear()MongoDB는 비용 추정 대신 실제 시도(plan racing)를 수행하므로 수동 통계가 필요 없다.
Redis
# Not applicable: Redis has no query optimizer / statistics.명령 복잡도는 고정되어 있으며, 성능은 데이터 구조 선택에 달려 있다.