我有一個2億條記錄的靜態人口統計表,包含230列。沒有索引,也沒有任何獨特的單獨列。
此表具有ZIP (varchar(5))
和STREET NUMBER (varchar(10))
列,實際上這些列將用於此表中的所有連接。非常大的靜態表,其中沒有Where子句
將會有從不是Where子句,因爲此表用作針對單個客戶端表的「匹配」平臺。客戶表格可以是從20K到300萬行的任何地方,並且也將具有ZIP和街道號碼列。所以至少我的加入將包括:ZIP = ZIP
和STREET_NO = STREET_NO
。還會有其他連接條件,但它們將使用模糊匹配等功能。 SELECT
條款將是動態的,並將包含任意數量的列,因此覆蓋索引似乎不實際。
我可以自由地在大量的表上添加索引。到目前爲止,我添加了ID身份主鍵,給我一個聚集索引。然後,我在(ZIP,STREET NO)上添加了非聚集索引。
但是,我不確定代理鍵上的聚簇索引是否必要,因爲這是靜態數據。
因爲永遠不會有Where子句,這是一個JOIN問題,我可能會更好地使羣集索引(ZIP,STREET NO)?每當我運行一個查詢並且認爲這可能是可疑的時,我在當前羣集ID列上看到很多書籤查找(佔執行計劃執行時間的80%)。
感謝您的回覆。