技术开发 频道

巧妙使用SQL SERVER索引 调优SQL语句

  三 创建数据测试下上面学到的理论知识

--创建表

CREATE TABLE employee

(

emp_username varchar (
20),

emp_register DATETIME

)



--插入测试数据

DECLARE @startid
INT

DECLARE @endid
INT

SELECT @startid= 1,@endid = 100

WHILE @startid <=@endid

BEGIN

INSERT INTO employee (

    emp_username,

    emp_register

) VALUES (

    
/* emp_username - varchar (20) */ '刘'+CAST(@startid AS NVARCHAR(20)),

    
/* emp_register - DATETIME */ GETDATE() )

SELECT @startid =@startid +1;

END



-- 查询employee的执行计划 和 io  信息

SET STATISTICS IO ON

SELECT * FROM employee WHERE emp_username = '刘'


 

   查看消息输出的 IO 信息

  表'employee'。(1)1扫描计数1,(2)逻辑读取1 次,(3)物理读取0 次,(4)预读0 次,lob 逻辑读取0 次,lob 物理读取0 次,lob 预读0 次。

  输出的信息和上面的图片讲解的是对应的

  1. 执行的扫描次数 。

  2. 从磁盘读取的页数。

  3. 为进行查询而放入缓存的页数。

  4. 预读

  T_SQL transaction 语句有很多种的写法,但是决定那条语句是最优的是根据(logical reads) 逻辑读取来判断。

  添加聚集索引 查询逻辑读取是否会变少

CREATE CLUSTERED INDEX Idx_emp_username ON employee (emp_username);



--然后再执行查询

SET STATISTICS IO ON

SELECT * FROM employee WHERE emp_username = '刘'

0
相关文章