zoukankan      html  css  js  c++  java
  • 使用SQL Server 索引中的包含性列的索引(Include)

    抓取出来的执行SQL如下,40W的数据Inner Join 3W的数据:

    declare @p11 int
    set @p11=15
    declare @p12 int
    set @p12=1
    exec SP_GSP_Get_Data_Paged @Tables=N'QRY_WORKITEM INNER JOIN MV_XSDD ON ROOTPROCINSTID = MV_XSDD."ProcessInstanceID"',@Fields=N' MV_XSDD."SalesOrderCode", MV_XSDD."BTypename", MV_XSDD."SaleToName", MV_XSDD."CustomField2", MV_XSDD."LSBMZD_BMMC", MV_XSDD."LSWLDW_DWMC",QRY_WORKITEM.STARTEDDATE,QRY_WORKITEM.PROCESSINSTANCEID,QRY_WORKITEM.ACTIVITYDEFINITIONID ,

    QRY_WORKITEM.PROCESSDEFINITIONID ,QRY_WORKITEM.WORKITEMID,QRY_WORKITEM.WORKTYPE',@PK=N'WORKITEMID',

    @Filter=N'QRY_WORKITEM.Participant = ''25ef7e1c-f205-4982-a684-1b6b1ab210f7'' and QRY_WORKITEM.State=''2'' AND QRY_WORKITEM.BIZPROCID = ''6c62d818-9d4f-47db-b63c-264b0982ced3''',@Sort=N'STARTEDDATE',@PageSize=220,@PageNumber=1,@AppendantTables=N'',@AppendantFilter=N'QRY_WORKITEM.Participant = ''25ef7e1c-f205-4982-a684-1b6b1ab210f7'' and QRY_WORKITEM.State=''2'' AND QRY_WORKITEM.BIZPROCID = ''6c62d818-9d4f-47db-b63c-264b0982ced3''',@AppendantSort=N'',@RecordCount=@p11 output,@RevisedPageNumber=@p12 output

     

    具有包含性列的索引

    在 SQL Server 2005 中,可以通过将非键列添加到非聚集索引的叶级别来扩展非聚集索引的功能。通过包含非键列,可以创建覆盖更多查询的非聚集索引。这是因为非键列具有下列优点:

    • 它们可以是不允许作为索引键列的数据类型。 
    • 在计算索引键列数或索引键大小时,数据库引擎不考虑它们。

    当查询中的所有列都作为键列或非键列包含在索引中时,带有包含性非键列的索引可以显著提高查询性能。这样可以实现性能提升,因为查询优化器可以在索引中找到所有列值;不访问表或聚集索引数据,从而减少磁盘 I/O 操作。

    CREATE NONCLUSTERED INDEX [WORKITEM_CHA_ID] ON [WORKITEM] 
    (
    [PARTICIPANT] ASC,
    [STATE] ASC,
    [BIZPROCID] ASC
    )
    INCLUDE ( [WORKITEMID],
    [STARTEDDATE],
    [ROOTPROCINSTID])

    GO

    新增上这个索引后,查询提高到1秒

  • 相关阅读:
    要检测两个C文件的代码的抄袭情况
    MFC简易画图
    hive中select 走与不走mapreduce
    JSP response request 中文乱码
    Hive内部自定义函数UDF
    eclipse编辑jsp没有代码提示
    Hive输出文件的间隔符
    Hadoop和HBase集群的JMX监控
    Hadoop配置项整理
    函数的递归,面向过程编程
  • 原文地址:https://www.cnblogs.com/liyongjian/p/3009717.html
Copyright © 2011-2022 走看看