快捷搜索:

SQL Server 查询性能优化——覆盖索引(二)

在SQL Server 查询机能优化——覆盖索引(一)中讲了覆盖索引的一些理论。

本文将详细讲一下应用不合索引对查询机能的影响。

下面经由过程实例,来查看不合的索引布局,如凑集索引、非凑集索引、组合索引等来查看相同的SQL语句查询的不合机能

例一:没有任何索引的调查

1.表的碎片环境:

2.SQL查询语句与查询履行计划资源

--要求返回IO统计,也便是数据页造访的数量

SET STATISTICS IO ON --没有任何索引环境下的数据页造访数量

SELECT[WBOOK_NO],[COP_G_NO]

,[G_NO],[CODE_T]

,[QTY_1],[UNIT_1]

,[TRADE_TOTAL],[GROSS_WT]

FROM [WBK_PDE_LIST_ORG_HISTROY] where qty_1 between 50 and 500

--表'WBK_PDE_LIST_ORG_HISTROY'。扫描计数1,逻辑读取1568 次,物理读取54 次,预读1568 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读 0 次。

SET STATISTICS IO OFF

例二:经由过程凑集索引调查

1.凑集索引的碎片环境:

2.SQL查询语句与查询履行计划资源

--要求返回IO统计,也便是数据分页造访的数量

SET STATISTICS IO ON ---经由过程凑集索引调查的数据页数量

create clustered index idx_WBK_PDE_LIST_ORG_HISTROY on [WBK_PDE_LIST_ORG_HISTROY](QTY_1) SELECT [WBOOK_NO]

,[COP_G_NO],[G_NO]

,[CODE_T],[QTY_1]

,[UNIT_1],[TRADE_TOTAL]

,[GROSS_WT]FROM [WBK_PDE_LIST_ORG_HISTROY] where qty_1 between 50 and 500

--表'WBK_PDE_LIST_ORG_HISTROY'。扫描计数1,逻辑读取351 次,物理读取4 次,预读345 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。

SET STATISTICS IO OFF

--- drop index [WBK_PDE_LIST_ORG_HISTROY].idx_WBK_PDE_LIST_ORG_HISTROY

---

例三:强制经由过程非凑集索引调查

1.非凑集索引的碎片环境:

2.SQL查询语句与查询履行计划资源

--要求返回IO统计,也便是数据页造访的数目

SET STATISTICS IO ON

--强制经由过程非凑集索引调查的数据页数量,用错索引比不用索引更糟糕 createindex idx_WBK_PDE_LIST_ORG_HISTROY on [WBK_PDE_LIST_ORG_HISTROY](WBOOK_NO)

SELECT [WBOOK_NO]

,[COP_G_NO],[G_NO]

,[CODE_T],[QTY_1]

,[UNIT_1],[TRADE_TOTAL]

,[GROSS_WT]FROM [WBK_PDE_LIST_ORG_HISTROY] with (index(idx_WBK_PDE_LIST_ORG_HISTROY)) where qty_1 between 50 and 500

--表'WBK_PDE_LIST_ORG_HISTROY'。扫描计数1,逻辑读取61065 次,物理读取864 次,预读727 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。

SET STATISTICS IO OFF

--- drop index [WBK_PDE_LIST_ORG_HISTROY].idx_WBK_PDE_LIST_ORG_HISTROY

例四:经由过程字段顺序不适用的覆盖索引调查

1.非凑集索引的碎片环境:

2.SQL查询语句与查询履行计划资源

--要求返回IO统计,也便是数据页造访的数量

SET STATISTICS IO ON

--经由过程字段顺序不适用的覆盖索引调查的数据页数量 createindex idx_WBK_PDE_LIST_ORG_HISTROY on [WBK_PDE_LIST_ORG_HISTROY]([WBOOK_NO]

,[COP_G_NO],[G_NO]

,[CODE_T],[QTY_1]

,[UNIT_1],[TRADE_TOTAL]

,[GROSS_WT])

SELECT [WBOOK_NO],[COP_G_NO]

,[G_NO],[CODE_T]

,[QTY_1],[UNIT_1]

,[TRADE_TOTAL],[GROSS_WT]

FROM [WBK_PDE_LIST_ORG_HISTROY] where qty_1 between 50 and 500

--表'WBK_PDE_LIST_ORG_HISTROY'。扫描计数1,逻辑读取687 次,物理读取9 次,预读683 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。

SET STATISTICS IO OFF

--- drop index [WBK_PDE_LIST_ORG_HISTROY].idx_WBK_PDE_LIST_ORG_HISTROY

例五:经由过程覆盖索引调查

1.非凑集索引的碎片环境:

2.SQL查询语句与查询履行计划资源

--要求返回IO统计,也便是数据页造访的数量

SET STATISTICS IO ON

--经由过程覆盖索引调查的数据页数量 createindex idx_WBK_PDE_LIST_ORG_HISTROY on [WBK_PDE_LIST_ORG_HISTROY]([QTY_1]

,[COP_G_NO],[G_NO]

,[CODE_T],[WBOOK_NO]

,[UNIT_1],[TRADE_TOTAL]

,[GROSS_WT])

SELECT[WBOOK_NO],[COP_G_NO]

,[G_NO],[CODE_T]

,[QTY_1],[UNIT_1]

,[TRADE_TOTAL],[GROSS_WT]

FROM [WBK_PDE_LIST_ORG_HISTROY] where qty_1 between 50 and 500

--表'WBK_PDE_LIST_ORG_HISTROY'。扫描计数1,逻辑读取178 次,物理读取5 次,预读175 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。

SET STATISTICS IO OFF

--- drop index [WBK_PDE_LIST_ORG_HISTROY].idx_WBK_PDE_LIST_ORG_HISTROY

例六:经由过程字段顺序不适用的覆盖索引调查

1.凑集索引的碎片环境:

2.SQL查询语句与查询履行计划资源

--要求返回IO统计,也就数据页造访的数量

SET STATISTICS IO ON

---经由过程字段顺序不适用的覆盖索引调查的数据页数量 createindex idx_WBK_PDE_LIST_ORG_HISTROY on [WBK_PDE_LIST_ORG_HISTROY]([WBOOK_NO]) include(qty_1

,[COP_G_NO],[G_NO]

,[CODE_T],[UNIT_1]

,[TRADE_TOTAL],[GROSS_WT])

SELECT[WBOOK_NO]

,[COP_G_NO],[G_NO]

,[CODE_T],[QTY_1]

,[UNIT_1],[TRADE_TOTAL]

,[GROSS_WT]FROM [WBK_PDE_LIST_ORG_HISTROY] where qty_1 between 50 and 500

--表'WBK_PDE_LIST_ORG_HISTROY'。扫描计数1,逻辑读取682 次,物理读取1 次,预读492 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。

SET STATISTICS IO OFF

---

drop index [WBK_PDE_LIST_ORG_HISTROY].idx_WBK_PDE_LIST_ORG_HISTROY

您可能还会对下面的文章感兴趣: