您的位置:首页 > 数据库

【原创】Microsoft SQL Server 2005技术内幕:T-SQ程序设计 学习笔记

2012-03-08 10:52 561 查看
第一章 逻辑查询处理

  1、三值逻辑:True,False,Unknown

    Unknown出现在包含Null值的逻辑表达式中,例如下面三个表示(NULL>42; NULL = NULL; X+NULL>Y),

    另外否定的Unknown(就是 not Unknown)还是Unknown;

    处理方式:所有查询筛选器(on,where,Having)把 Unknown 当 False 处理;

Check约束中当做True处理。(比如一个check约束要就salary列值必须大于0,这时如果向表插入salary

为NULL的行时可以被接受,因为NULL>0 等于Unknown 即True)

注意:(a)UNIQUE约束无法向该表插入值为NULL的两行。

       (b)Order By 把NULL排列在一起,Group By 把NULL分在一起。

第三章

1、清空缓存:当需要分析查询性能,必须排除缓存的对结果的影响,需要清楚缓存中的数据执行计划

  具体方法:a、清空楚缓中的数据 DBCC DROPCLEANBUFFERS; 就是 DBCC DropCleanBuffers

       b、清空楚缓中的执行计划 DBCC FREEPROCCACHE; 就是 DBCC FreeProcCache

       c、清空特定数据库的执行计划 DBCC FlushProcInDB(<db_id>); 一般不推荐使用此命令

       DBCC(database consistenecy checker) 是一个实用命令集,用来检查数据库的逻辑一致性及物理一致性,进行数据库维护。

2、语句执行I/O信息:SET Statistics IO ON, 关闭 SET Statistics IO OFF

    执行SQL语句后在消息里显示格式如下:

      Table 'Orders'. Scan cout 3, logical reads 536, physical reads 2, readahead reads 532,

      lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

    含义:表的扫描访问计数 3,从缓存读取的页数 536,从磁盘读取的页数 2 ,从磁盘预读取的页数 532,

          与大型对象相关的逻辑读取数与物理读取数。

    SQL 2008显示如下:扫描计数 3,逻辑读取 39513 次,物理读取 0 次,预读 0 次,

   lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

3、


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐