我有一个这样的存储过程:
alter procedure [dbo].[fetch]
@locid integer
as
begin
SET NOCOUNT on
select * from transaction_tbl where locid=@locid
end
在执行此操作时,我得到了大约 1500 条记录..这大约需要 35 秒,这次有什么办法可以规定
我有一个这样的存储过程:
alter procedure [dbo].[fetch]
@locid integer
as
begin
SET NOCOUNT on
select * from transaction_tbl where locid=@locid
end
在执行此操作时,我得到了大约 1500 条记录..这大约需要 35 秒,这次有什么办法可以规定
显然,加快查询的方法是在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
因此,您可以将结果与子句中的其他表结合使用。
这里可能没有一个唯一的答案,但通常在这种情况下,您需要为您的表添加一个索引。
locid
确保您在该字段上有一个索引。
CREATE UNIQUE NONCLUSTERED INDEX (indexname)
ON transaction_tbl (locid)