金沙国际官网_金沙国际平台登录

因为这个金沙国际官网_金沙国际平台登录网站与很多的大型澳门赌场都有合作,金沙国际官网_金沙国际平台登录尽职尽责,高效执行,保持好奇心,不断学习,追求卓越,点击进入金沙国际官网_金沙国际平台登录马上体验吧,所以现在也正式地开始了营业。

您的位置:金沙国际官网 > 数据库 > Direction的两种方式,server查询可编程对象定义的

Direction的两种方式,server查询可编程对象定义的

发布时间:2019-12-04 08:21编辑:数据库浏览(129)

    最近发现一个分页查询存储过程中的的一个SQL语句,当聚集索引列的排序方式不同的时候,效率差别达到数十倍,让我感到非常吃惊
    由此引发出来分页查询的情况下对大表做Clustered Scan的时候,
    不同情况下会选择FORWARD 或者 BACKWARD差别,以及建立聚集索引时,选择索引列的排序方式的一些思考
    废话不多,上代码
    先建立一张测试表,在Col1上建立聚集索引,写入100W条数据

    本文目录列表:

    连接查询:通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志。

    create table ClusteredIndexScanDirection
    (
        Col1 int identity(1,1),
        Col2 varchar(50),
        Col3 varchar(50),
        Col4 Datetime
    )
    
    
    create unique clustered index idx_Col1 on ClusteredIndexScanDirection(Col1 ASC) 
    
    DECLARE @date datetime,@i int=0
        set @date=GETDATE()
        while @i<1000000
        begin
        insert into ClusteredIndexScanDirection values (NEWID(),NEWID(),DATEADD(MI,@i,GETDATE()-200))
        set @i=@i+1
    end
    

    1、sql server查看可编程对象定义的方式对比

    常用的两个链接运算符:

     

    2、整合实现所有可编程对象定义的查看功能的存储dbo.usp_helptext2

    1.join   on

     

    3、dbo.helptext2的选择性测试

    2.union

    先直观地看一下聚集索引扫描时候的FORWARD 和 BACKWARD

    4、总结语

        在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中。当检索数据时,通过连接操作查询出存放在多个表中的不同实体的信息。连接操作给用户带来很大的灵活性,他们可以在任何时候增加新的数据类型。为不同实体创建新的表,随后通过连接进行查询。

     

    5、参考清单列表

    示例一:

     BACKWARD

     

     图片 1

      执行如下分页查询,当按照Col4符合2017-7-18和2017-7-23,并且Col1 倒序排序的时候
      从执行计划看,Clustered Index Scan的Scan Direction的方式是BACKWARD

    1、sql server查看可编程对象定义的方式对比

     

      图片 2

     

    示例二:

    图片 3

    上一篇博文重构sql server的sys.helptext存储中写了sys.helptext的限制和输出格式每行自带char(13)和char(10)这两个字符。为了将可编程对象定义查询方式研究透彻,以下表格列出了查询可编程对象定义的不同方式的却别和对可编程对象定义查看的支持程度。

     图片 4

     

    对象类型描述 对象类型简写
    sys.sp_helptext
    sys.sql_modules
    sys.system_sql_modules
    sys.all_sql_modules
    object_definition
    CHECK_CONSTRAINT
    C
    支持 不支持
    不支持
    不支持
    支持
    DEFAULT_CONSTRAINT(contraint,stand-alone)
    D
    支持 支持
    不支持
    支持
    支持
    SQL_SCALAR_FUNCTION
    FN
    支持
    支持
    支持
    支持
    支持
    SQL_INLINE_TABLE_VALUED_FUNCTION
    IF
    支持
    支持
    支持
    支持
    支持
    SQL_STORED_PROCEDURE
    P
    支持
    支持 支持
    支持
    支持
    RULE(old-style,stand-alone)
    R
    支持
    支持
    不支持
    支持
    支持
    REPLICATION FILTER PROCEDURE
    RF
    支持
    支持
    支持
    支持
    支持
    SQL_TABLE_VALUED_FUNCTION
    TF
    支持
    支持
    支持
    支持
    支持
    SQL_TRIGGER
    TR
    支持(除数据库DDL触发器和服务器触发器外)
    支持(除服务器触发器外)
    不支持
    支持(除服务器触发器外)
    支持(除服务器触发器外)
    USER_TABLE
    U
    computed_column
    支持
    不支持
    不支持
    不支持
    不支持
    VIEW
    V
    支持
    支持
    支持
    支持
    支持

     

     FORWARD

    注意:

    示例三:

      执行如下分页查询,当按照Col4符合2017-7-18和2017-7-23,并且Col1 正序排序的时候
      从执行计划看,Clustered Index Scan的Scan Direction的方式是FORWARD

    1、带有_modules的是系统提供的目录视图类。

     图片 5

    图片 6

    2、sys.sql_modules包括所有用户定义的可编程对象的,当然也不支持计算列和服务器触发器的。

     

    图片 7

    3、sys.system_sql_modules不支持系统定义的类型为C、D、R、TR的对象。

    示例四:

      查询条件一样,分页情况下,排序方式不一样,性能上有么有差别?肯定有,太明显了,如果没有,本文也就没有什么意义了
      如图是上述两种查询方式在我本机的测试结果,同样是前100条数据,因为排序方式不同,其代价也是不同的
      逻辑读,一个是2327,一个是9978次,差别不小吧,在实际场景中,这个差别是非常非常大的,大到足以超乎你想想

    4、sys.all_sql_modules就是sys.sql_modules和sys.system_sql_modules这个视图的并集结果的,当然也不支持系统定义的类型为C、D、R、TR类型的对象。

     图片 8

     

    5、sys.sp_helptext虽然支持以上表格中除数据库DDL触发器和服务器触发器之外的可编程对象,但是其输出格式有限制:1、每行最多225双字节字符号,这样有可能造成输出将一个标识符分割为前后两行的。

     

     对FORWARD和BACKWARD有一个直观的感受之后,来说说这两者的区别

    6、object_definition函数支持以上表格中除服务器除触发器和计算列外的可以变成对象。

    示例五:

      如果了解B树索引结构的话,应该知道聚集索引是以类似于B树结构的方式来组织的,既然是B树结构,
      那么下面这个图就不难理解了,
      在索引列按照某事方式排序的情况下,比如

    7、sys.sp_helpttext和object_definition有个功能的限制:1、在SSMS客户端中如果使用字符串类型变量接收返回的而结果,有可能受制于SSMS客户端针对字符串变量的最大限制(sql server 2012中的最大限制是43679双字节字符长度)不能全部输出到客户端,这个缺点可以从通过程序编码实现得到完美体现。

     图片 9

      create unique clustered index idx_Col1 on ClusteredIndexScanDirection(Col1 ASC) 
      或者是
      create unique clustered index idx_Col1 on ClusteredIndexScanDirection(Col1 DESC) 
    

     

     

    本文由金沙国际官网发布于数据库,转载请注明出处:Direction的两种方式,server查询可编程对象定义的

    关键词:

上一篇:的常见问题,MySQL客户端连接方式

下一篇:没有了