特定方案的索引指南

时间:2014-12-17 17:34:04

标签: sql sql-server

请参阅下面的SQL:

select count(*) from dbcomplete2_all
inner join dbusns on dbcomplete2_all.urns = dbusns.urns and dbcomplete2_all.datasetname = dbusns.datasetname
where dbusns.cro<>dbcomplete2_all.cro

dbcomplete2_all和dbusns每个包含5500万条记录。我试图找出索引这两个表的最佳方法。我相信这是最好的方式:

CREATE INDEX URNsDatasetNameCRO
ON dbcomplete2_all (URNs,DatasetName,CRO)

CREATE INDEX URNsDatasetNameCRO
ON dbUSNS(URNs,DatasetName,CRO)

查询在一分钟内运行。但是,我也试过这个:

CREATE INDEX URNsDatasetNameCRO
ON dbcomplete2_all (URNs,DatasetName)

CREATE INDEX URNsDatasetNameCRO
ON dbUSNS(URNs,DatasetName)

查询用于在两分钟内使用第二组索引运行。现在它大致相同。哪种方式更好&#34;?

1 个答案:

答案 0 :(得分:0)

您的第二组索引将导致密钥查找,因为未包含CRO第一个更好,因为它包含查询中包含的所有列。但是,索引不是免费的午餐。每次插入/更新到表中都会导致对索引的插入/更新。将插入/更新效果与SELECT效果进行平衡。