zoukankan      html  css  js  c++  java
  • MSSql性能优化

    1、参数化sql           对于一般简单查询,数据库能自动参数啊以重用计划缓存,如:  

    SELECT * FROM table WHERE id=1;  

    SELECT * FROM table WHERE id=4  

             在sqlserver内部能自动参数化这个查询,SELECT * FROM table WHERE id=@1        但是一旦sql语句中带有join、union、top……等关键字,sqlserver内部将不会自动参数化。        在sql2005中,通过alter database XXX set paramenterization forced的强制参数化命令能够将所有sql中的常量参数化,但是强制参数化会因为常量类型不一致造成查询结果误差。   2、使用查询中的索引有效      a)、单列索引使用原则            单列索引能响应大部分的简单比较,包括等价和不等价。对于like操作无前置通配符也是有效的。如:  

    能有效使用索引的条件语句:

    [col1]=1 [col1]>100 [col1] between 0 and 100 [col1] like 'abc%'

    下列条件语句不会有效利用索引:

    ABS([col1])=1[col1]+1>100 [col1]+10 between 0 and 100 [col1] like '%abc%' 

           b)、避免在WHERE字句中对字段进行函数或表达式操作            看一下下面效率低下的例子和其解决方法  

    效率低下的写法:

    SELECT     * FROM  Production.Product WHERE SafetystockLevel/2=100  

    高效写法:

    SELECT     * FROM  Production.Product WHERE SafetystockLevel=2*100  

             下面是SQLServer2005的优化报告           类似的例子:  

    效率低下的写法   高效的写法

    SELECT     * FROM  Production.Product WHERE SubString(name,1,3)=’abc’  

    SELECT     * FROM  Production.Product WHERE name like ’abc%’  

    SELECT     * FROM  Production.Product WHERE datediff(day ,modifiedDate,’2005-11-30’)=0  

    SELECT     * FROM  Production.Product WHERE modifiedDate>=’2005-11-30’ andmodifiedDate<’2005-12-1’  

                  任何对列的操作都将导致表扫描,它包括数据库函数、计算表达式等等,查询时要尽可能将操作移至等号右边。         避免使用!=或<>、is null 或is not null、 in、not in等这样的操作符,因为这会是系统无法使用索引,而只能直接搜索表中数据。         例如:         select id from employee where id!=’B%’         优化器将无法通过索引来确定将要命中的行数,因此需要搜索该表的所有行。      c)、多列索引使用原则        则应考虑列的顺序。用于等于(=)、大于(>)、小于(<)或between搜索条件的where 字句或者参与联接的列应该放在最前面。其它列应该基于其非重要级别进行排序,就是说,从最不重复的列到最重复的列。        例如:        如果表中存在索引定义为LastName、FirstName,则该索引在搜索条件为where LastName=’Smith’或where LastName=Smith and FirstName like ’j%’时将很有用。不过,查询优化器不会将此索引用于基于FirstName(where FirstName=’Jane’)而搜索的查询。

    该文章转载自无忧考网:http://www.51test.net

  • 相关阅读:
    4-8(四)badboy 脚本录制工具的安装
    4-8(三)Jmeter 工具的基本使用
    4-8(二)jmete 主要文件目录及简单了解 http 协议
    4-8(一)jmeter 基础概念、什么时候做性能测试、性能测试的前提、性能测试主要指标、开展性能测试必备条件
    jmeter 介绍及 windows/Linux下安装
    如何测试(四)朋友圈如何测试?
    如何测试(二)聊天功能如何测试?
    如何测试(一)优惠券如何测试?
    如何测试(三)购物车如何测试?
    自动化面试题三(41 ~ 73)
  • 原文地址:https://www.cnblogs.com/oisiv/p/2871888.html
Copyright © 2011-2022 走看看