如何通过OPTION(RECOMPILE)优化带参数SQL语句的索引性能?
- 内容介绍
- 文章标签
- 相关推荐
本文共计655个文字,预计阅读时间需要3分钟。
在MS SQL Server 2008环境下进行测试。
1.无参数查询:首先查看一个简单的查询语句在大数据表中的查询情况:
sql SELECT fmr.FID, fmr.BasicTime FROM feeMeterRead fmr WHERE fmr.BasicTime='2015-12-02 00:00:00'; 在查询分析器中执行上述查询。本例为MSSQL2008环境下测试。
1. 无参数查询
先看一个简单的查询语句在大数据表中的查询情况:
SELECT fmr.FID,fmr.BasicTime FROM feeMeterRead fmr
WHERE fmr.BasicTime>='2015-12-02 00:00:00'
在查询分析器中执行后显示耗时5s,查询到的记录数为6223条
2. 带参数查询
现在引用参数再查询一次
DECLARE
@BasicTime DATETIME
SET @BasicTime= LEFT(CONVERT(VARCHAR(20),DATEADD(DAY,-2,GETDATE()),120),10)+' 00:00:00'
--SELECT @BasicTime
SELECT fmr.FID,fmr.BasicTime FROM feeMeterRead fmr
WHERE fmr.BasicTime>=@BasicTime
为保证查询条件一样,参数@BasicTime的值也是’2015-12-02 00:00:00’
在查询分析器中执行后显示耗时15s,查询到的记录数为6223条。
本文共计655个文字,预计阅读时间需要3分钟。
在MS SQL Server 2008环境下进行测试。
1.无参数查询:首先查看一个简单的查询语句在大数据表中的查询情况:
sql SELECT fmr.FID, fmr.BasicTime FROM feeMeterRead fmr WHERE fmr.BasicTime='2015-12-02 00:00:00'; 在查询分析器中执行上述查询。本例为MSSQL2008环境下测试。
1. 无参数查询
先看一个简单的查询语句在大数据表中的查询情况:
SELECT fmr.FID,fmr.BasicTime FROM feeMeterRead fmr
WHERE fmr.BasicTime>='2015-12-02 00:00:00'
在查询分析器中执行后显示耗时5s,查询到的记录数为6223条
2. 带参数查询
现在引用参数再查询一次
DECLARE
@BasicTime DATETIME
SET @BasicTime= LEFT(CONVERT(VARCHAR(20),DATEADD(DAY,-2,GETDATE()),120),10)+' 00:00:00'
--SELECT @BasicTime
SELECT fmr.FID,fmr.BasicTime FROM feeMeterRead fmr
WHERE fmr.BasicTime>=@BasicTime
为保证查询条件一样,参数@BasicTime的值也是’2015-12-02 00:00:00’
在查询分析器中执行后显示耗时15s,查询到的记录数为6223条。

