我們有一個大表(包含34列數字或日期時間數據的4.5億行),目前大約有一打推薦的查詢路徑。該表目前有17個索引,我無權改變此表的結構,儘管我能夠提供索引策略。SQL SERVER中的極大表應該如何索引?
我看到的第一個問題是沒有聚集索引,說明該表有一個由2列組成的唯一鍵。我想我可以改變它,然後處理其他索引。由於大約有十幾種常用的查詢方法,我認爲爲每個查詢方法添加一個索引是一件好事。所以說,查詢表的一種常見方式是通過CustomerId,我會在客戶ID上添加一個索引。這將是一個非聚集索引,但仍然是相當低效的權利?如果我使索引包含CustomerId和聚集索引中的2列,該怎麼辦?這會使SQL Server在其執行計劃中更有效率,還是這是一項無用的任務?
+1讓優化顧問決定什麼是真正發生的事情,而不是猜測。關於那個人最好的部分是他願意在一夜之間工作,或者當我在午餐時工作,所以我可以在方便時回來查看他的工作。 – Tom 2010-03-24 13:53:25
@Tom,正好。我曾經幫助建議一個擁有龐大數據庫的客戶,他們運行的報告大約需要45分鐘才能返回。事實證明,用戶查詢數據的方式沒有預料到,主表上的所有現有索引都沒有用。對於主要查詢來說,一段好日子的sql分析可以將其降低到20秒。 – 2010-03-24 14:02:14