zoukankan      html  css  js  c++  java
  • SQL Server 2005 排序order by对查询性能的影响(2)

          上次我们发现在建立了索引时,分页排序还是很慢。

          慢的语句:      

    SELECT TOP (10*(10000-1)) ID FROM  
    [dbo].[[[zping.com]]]]] ORDER BY  workflowid DESC

       上面说到如果取的top(10*10) 使用索引,这时很快,换成了top(10*(10000-1))就是表扫描啊,

        原来:这时SQL server 2005优化器评估索引时,发现从文件去找99990行数据时,这时很可能这id数据分散在每个数据页中,

    从索引查数据效率比表扫描要低,这时优化器就使用表扫描。

       这时如何优化和解决:方法如下

          1,建立(workflowid,id)的复合索引

          2,将id设置为聚集索引

       注意:

          在排序上建立索引,可以提高性能,但这主要取决于数据库索引效率评估

        

       总结:

         1,排序中要避免先“表扫描”后“排序”的情况

         2,避免在查询中取出大量数据在排序的情况,这时要对sql语句的“过滤条件”做严格限制,减少数据行数

         3,排序最后做到涵盖索引

  • 相关阅读:
    KindEditor编辑器的使用
    导航栏
    ajax php 验证注册用户名是否存在
    PS照片改底色
    截取邮箱@后面内容的两种情况
    js导航栏单击事件背景颜色变换
    model中的自动验证 $_validate $_auto
    一对一关联模型,HAS_ONE
    一对多关联模型,BELONGS_TO
    C++操作MySQL数据库
  • 原文地址:https://www.cnblogs.com/zping/p/1249057.html
Copyright © 2011-2022 走看看