0

我有一个这样的存储过程:

alter procedure [dbo].[fetch]
@locid integer 

as 
begin
SET NOCOUNT on
  select * from transaction_tbl where locid=@locid
end

在执行此操作时,我得到了大约 1500 条记录..这大约需要 35 秒,这次有什么办法可以规定

4

2 回答 2

1

显然,加快查询的方法是在transaction_tbl(loc_id). 我想建议这样一个简单的存储过程应该真正实现为内联表值函数:

create function udf_fetch (@LocId)
    @LocId int
)
returns table
return(select *
       from transaction_tbl 
       where LocId = @Locid;
      );

然后,您可以将其称为:

select *
from dbo.udf_fetch(@LocId)

from因此,您可以将结果与子句中的其他表结合使用。

于 2013-07-27T14:37:55.787 回答
0

这里可能没有一个唯一的答案,但通常在这种情况下,您需要为您的表添加一个索引。

locid确保您在该字段上有一个索引。

CREATE UNIQUE NONCLUSTERED INDEX (indexname)
ON transaction_tbl (locid)

http://msdn.microsoft.com/en-us/library/ms188783.aspx

于 2013-07-27T14:14:21.727 回答