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 毫秒。