我有这个存储过程来从数据库中恢复数据(动态查询)。我从c#codebehind调用这个存储过程,我将两个参数从c#传递给这个存储过程。
alter procedure [dbo].[GetCompleteCPTDetails]
@Practice_Short_Name varchar(50),
@Uploaded_Date nvarchar(max)
as
begin
DECLARE @CPTtablename nvarchar(300)
DECLARE @vQuery NVARCHAR(max)
DECLARE @upldate nvarchar(100)
set @upldate = @Uploaded_Date
set @CPTtablename ='ACER_CLAIMS_MASTER_DETAIL_Hist_'+@Practice_Short_Name
SET @vQuery = 'select Practice_Short_Name,Service_Date_From,Carrier_Name,
Location_Description,Patient_Number,Patient_First_Name,
Patient_Last_Name,Voucher_Number,Procedure_Code,Service_Fees,
Service_Payments,Service_Adjustments,Acer_Status,Acer_Allowed_Amount
from ' +@CPTtablename+'
where Uploaded_Date =''' + @upldate + '''
order by acer_status asc, Service_Date_From desc, Patient_First_Name asc'
EXEC (@vQuery)
end
GO
但是当我运行此查询时,它给了我TimeOut错误。但是,如果我在SP中为我的参数赋值,并从查询窗口运行SP,那么它显示正确的数据。
如果我从C#codebehind调用它,请解释我为什么会发出超时错误。
答案 0 :(得分:1)
这是一个非常简单的地方和顺序。
除非那只是一张没有索引的大表,应该很快
Uploaded_Date上是否有索引,是否没有碎片
此外,排序索引也会有所帮助。
您是否正在将所有内容加载到DataTable中? 如果是这样,请尝试加载到DataReader中。
尝试前1并删除订单。
如果没有返回,那么您有连接问题,因为查询不应该超时。
要尝试的另一件事是(没有锁定)以查看它是否是锁定问题。
为什么@Uploaded_Date nvarchar(max)?
这是约会吗?
答案 1 :(得分:-1)
这个问题可以有很多解决方案,因为问题区域在每种情况下都可能不同。
但最常见的是:
另外我想知道,您的应用程序位于DB所在的同一台机器上?