我要优化这个选择:
Select Dane1, Dane5, Dane6, Dane7 FROM Test
INNER JOIN Test2 ON Test.Id=Test2.IdTest
WHERE Dane5 > 199850我的数据库有两个表测试,test2:
测试设计: Id int ->PRIMARY KEY,Dane1 int,Dane2 int,Dane3 int,Dane4 int,Dane5 int,
test2设计: Id int ->PRIMARY KEY,Dane6 int,Dane7 int,IdTest int
默认索引:PK__test__7C8480AE(集群),PK__test2__7E6CC920(集群)
问题是:附加或删除哪些索引?
发布于 2015-06-15 15:45:05
在创建索引时,需要考虑的事情很少,例如,在本例中:
你可以试试这样的方法:
Create index test_xxx on test (Dane5) include (Dane1)包含Dane1的天气取决于有多少行,以及键查找是否导致问题
Id已经包含在其中,因为它是聚集索引
Create index test2_yyy on test2 (IdTest) include (Dane6, Dane7)将Dane6和Date7作为包含的列的天气也取决于需要对表执行的总查找量以获得它们。
您应该打开statistics,看看什么导致最符合逻辑的读取,以及是否需要在索引中包含包含的列。
发布于 2015-06-15 15:08:20
发布于 2015-06-15 15:15:49
正如Tim指出的,外键和外键上定义的索引是一个很好的调用。
如果您的where子句总是在Dane5上,一个额外的索引可以给您带来额外的速度,那就是在Dane5上添加一个非聚集索引。
https://stackoverflow.com/questions/30848416
复制相似问题