student:999,999 行(大表),classID 無索引。classInfo:100 行(小表),classID 聚集主鍵。SELECT TOP 1000 a.sUserName, b.sClassName
FROM student a
INNER JOIN classInfo b ON a.classID = b.classID;
SELECT TOP 1000 a.sUserName, b.sClassName
FROM classInfo b
INNER JOIN student a ON a.classID = b.classID;
SELECT TOP 1000 a.sUserName, b.sClassName
FROM classInfo b, student a
WHERE a.classID = b.classID;
TOP 1000 可能觸發「行目標」優化,提前終止掃描。student.classID 有索引 → Nested Loops(小表驅動大表索引尋找)極快。AUTO_UPDATE_STATISTICS ON,大表考慮增量更新或全掃描。SELECT * 增加 I/O 並阻礙覆蓋索引。WHERE id > @last_id ORDER BY id)替代 OFFSET/FETCH。JOIN 順序由優化器決策,開發者應聚焦於:索引覆蓋 JOIN 鍵、統計信息鮮度、精確列投影、分頁模式。寫法規範化是專業素養,性能優化靠索引與統計。