逗人, 我運行相同的查詢和不同的值需要不同的執行時間,如下所示: 查詢是:不同的執行時間,其中在where子句
select * from table1 where userID = 2
它掃描非羣集索引idx1,其中包含userID作爲其中一個鍵,所以我在5秒內得到結果。 但是當我用userID = 5 再次運行它時,它會掃描非包含用戶ID作爲其鍵之一的非集羣索引idx2,並在2小時後得到結果,我認爲它可能讀取整個表以找到userID = 5
這個問題的原因是什麼? 也許userID = 5的值不在idx1葉中? 我認爲在NC索引存儲的葉級的值的範圍和對用戶ID = 4以及用於用戶ID運行良好的查詢= 6,從而用戶ID = 5應該是在葉級,
請指點
嘗試更新表 –
的'統計量'請發表實際執行計劃和表 – TheGameiswar
的架構如果用戶ID是外鍵,您應該有一個專用索引,並且不應該發生這些問題 – MtwStark