開發環境輕鬆跑的查詢,上線大資料量卻癱瘓伺服器。原因:aspnet_Users、aspnet_Membership、aspnet_Profile 等表的常用查詢欄位(UserName、Email、UserId、IsAnonymous)完全沒有索引,導致全表掃描。
行銷部頻繁執行報表查詢,觸發大量 Table Scan,IO 與 CPU 飆升。SQL Profiler 顯示查詢耗時,但 CPU 負載看似正常——因為阻塞發生在 IO 等待。網站變慢、逾時,卻查不出「慢查詢」,因為每條查詢單獨看不算慢,併發量大時系統癱瘓。

UserName、Email、UserId、IsAnonymous、ApplicationId 建立非叢集索引預設 Membership 架構未建索引是已知缺陷,上線前務必補上,否則等同留著後門讓合法查詢演變成 DoS 攻擊。