Use daily or hourly partitions that match SLA checkpoints. Ensure pruning actually happens by aligning predicates with partition keys and avoiding expressions. Implement sliding windows that add new partitions early and retire cold ones cleanly. Partition exchange loading can atomically publish results, shrinking lock windows and avoiding user-facing inconsistencies altogether.
Design keys by join and filter frequency, then INCLUDE columns to satisfy common SELECT lists without lookups. Order matters: place highly selective columns first. Keep indexes narrow to reduce write amplification. Review usage monthly; retiring a rarely used index can free IO budget for the handful that truly carry workloads.
Schedule index rebuilds or reorgs to respect peak windows and replication lag. Refresh statistics after large loads or heavy churn, not just on a timer. In columnar stores, compact small files and optimize metadata. Silent drift in stats often explains overnight slowdowns, so codify refresh thresholds instead of relying on folklore.





