我们编写了一个存储过程,用于一次从DB中选择一条记录。使用相同的存储过程读取2000条记录需要4秒。有没有办法优化它? (如2000条记录的单个存储过程)
这是我的存储过程:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[GetItemValue](@ItemName VARCHAR(200),@TimeStamp as DATETIME)
AS
select * from EIItemData
where ItemName=@ItemName AND TimeStamp=@TimeStamp
任何人都可以告诉我如何优化这个存储过程来读取2000条记录,而不是为每个项目调用一次。
答案 0 :(得分:1)
SQL查询分析器
http://www.developer.com/db/article.php/3418031/Query-Analyzer-Tips-and-Tricks.htm
存储过程优化
http://www.mssqlcity.com/Tips/stored_procedures_optimization.htm
如何对优化-查询强>
最后但并非最不重要的索引,索引,索引...
答案 1 :(得分:0)
请考虑SQL Server(以及所有RDBMS)在基于集合的操作中效果最佳。
考虑更改您的调用代码(客户端)以期望读取一组记录。
请发布您的存储过程,无论是阅读还是插入,我们都可以帮助您找到最佳解决方案!
答案 2 :(得分:0)
看看你的SQL,我会说,提出以下几点:
select *
语法,只需返回所需的列。where
子句中的列索引。考虑添加它们。