Sql server MS Sql 2008二维位置两列索引
我有一个名为“Map”的表,其结构为“xposint,yposint,FieldType int” “XPO”和“YPO”是主键。有几个表依赖于此表,引用“XPos”和“YPO”列 在“映射”表中,用户不能添加或删除行。“FieldType”列中的值很少更改 大多数选择如下所示:Sql server MS Sql 2008二维位置两列索引,sql-server,performance,indexing,Sql Server,Performance,Indexing,我有一个名为“Map”的表,其结构为“xposint,yposint,FieldType int” “XPO”和“YPO”是主键。有几个表依赖于此表,引用“XPos”和“YPO”列 在“映射”表中,用户不能添加或删除行。“FieldType”列中的值很少更改 大多数选择如下所示: SELECT M.XPos, M.YPos, M.FieldType, N.NoteTitle, N.NoteDescription FROM Map AS M INNER JOIN Note AS N ON M.XP
SELECT M.XPos, M.YPos, M.FieldType, N.NoteTitle, N.NoteDescription
FROM Map AS M
INNER JOIN Note AS N ON M.XPos = N.XPos AND M.YPos = N.YPos
WHERE M.XPos >= 248 AND M.XPos <= 311
AND M.YPos >= 578 AND M.YPos <= 715
选择M.XPos、M.YPos、M.FieldType、N.notetTitle、N.NoteDescription
从映射为M
在M.XPos=N.XPos和M.YPos=N.YPos上作为N的内部联接注释
其中M.XPos>=248和M.XPos=578以及M.YPos在您选择的字段上创建索引,并在包含的列中添加筛选依据的字段
下面是一个例子:
在[dbo].[tblPROJECTS]上创建非聚集索引[IDX_Cover]
(
[QUOTESTATUS]ASC
)
包括([项目金额],
[分成本],
[卖方成本],
[成本],
[crmProjID])在[PRIMARY]上启用(PAD_INDEX=OFF、STATISTICS_norecocomputer=OFF、SORT_IN_TEMPDB=OFF、IGNORE_DUP_KEY=OFF、DROP_EXISTING=OFF、ONLINE=OFF、ALLOW_ROW_LOCKS=ON、ALLOW_PAGE_LOCKS=ON)
此索引适用于以下语句:
挑选
报价表
来自dbo.tblProjects
其中项目金额>0
和子成本=0
而供应商成本>0
而成本>0
和crmProjID=2快速问题:您运行过SQL Server的数据库引擎优化顾问吗?这真的很有帮助,特别是如果你能模拟数据库通常会经历的工作负载,你为什么认为索引无效?聚集索引通常适用于“范围查询”,即搜索谓词位于特定值之间的情况。您是否有性能问题?您是否查看了查询计划并按照@Hal的建议使用了DTA?注释
表是如何索引的?@Hal,@Pondlife:DTA显示,使用了PK聚集索引(XPos,YPos)并建议在(XPos,YPos)上创建新的非聚集索引。这对我来说毫无意义。@Ed Harper:“注意”表是由“XPos,YPos”索引的-和“Map”表一样。对不起,我真的不明白你到底认为我应该怎么做。