SQL语句性能优化

一、不要使用 SELECT * , 应 SELECT 需要的字段。
二、WHERE 条件之后尽量减少使用函数或数据转换。

 

一、不要使用 SELECT * , 应 SELECT 需要的字段。

--1.查询表所有字段
SET STATISTICS TIME ON
SET STATISTICS IO ON

SELECT * 
FROM dbo.TOrders
WHERE FCompanyID=36052

SET STATISTICS TIME OFF
SET STATISTICS IO OFF
 SQL Server 执行时间:
   CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。
SQL Server 分析和编译时间: 
   CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。

(37682 行受影响)
表 'TOrders'扫描计数 1,逻辑读取 1141 次,物理读取 0 次,预读 0 次,lob 逻辑读取 31086 次,lob 物理读取 0 次,lob 预读 7625 次。

 SQL Server 执行时间:
   CPU 时间 = 358 毫秒,占用时间 = 1568 毫秒。

 

--2.查询表需要的字段
SET STATISTICS TIME ON
SET STATISTICS IO ON

SELECT FID,FBetNumber,FGameID,FPeriodID,FUserID,FCompanyID
FROM dbo.TOrders
WHERE FCompanyID=36052

SET STATISTICS TIME OFF 
SET STATISTICS IO OFF
 SQL Server 执行时间:
   CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。
SQL Server 分析和编译时间: 
   CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。

(37682 行受影响)
表 'TOrders'扫描计数 1,逻辑读取 1141 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

 SQL Server 执行时间:
   CPU 时间 = 31 毫秒,占用时间 = 240 毫秒。

 

 

 

 

二、WHERE 条件之后尽量减少使用函数或数据转换。

--1
SET STATISTICS TIME ON
SET STATISTICS IO ON

SELECT *
FROM dbo.TOrders
WHERE YEAR(FCreateTime)=2016

SET STATISTICS TIME OFF
SET STATISTICS IO OFF
 SQL Server 执行时间:
   CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。

(35798 行受影响)
表 'TOrders'扫描计数 1,逻辑读取 752 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

 SQL Server 执行时间:
   CPU 时间 = 78 毫秒,占用时间 = 662 毫秒。

 

--2
SET STATISTICS TIME ON
SET STATISTICS IO ON

SELECT *
FROM dbo.TOrders
WHERE FCreateTime >= '2016-01-01' AND FCreateTime < '2017-01-01'

SET STATISTICS TIME OFF 
SET STATISTICS IO OFF
 SQL Server 执行时间:
   CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。
SQL Server 分析和编译时间: 
   CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。

(35798 行受影响)
表 'TOrders'扫描计数 1,逻辑读取 752 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

 SQL Server 执行时间:
   CPU 时间 = 47 毫秒,占用时间 = 642 毫秒。

 

 

 

 

 

posted @ 2017-04-14 00:15  茗::流  阅读(186)  评论(0编辑  收藏  举报
如有雷同,纯属参考。如有侵犯你的版权,请联系我。