执行过程需要3分钟以上

时间:2017-08-17 10:47:28

标签: sql-server sql-server-2008 stored-procedures

我正在运行一个程序,其中有一个名为mytable的表。该表包含200万条记录。当我运行带参数的过程来过滤并获取数据但过程结果数据在3分钟后返回仅12行。返回的数据很好,但我想知道为什么程序花费的时间超过3分钟。

我的程序:

ALTER Proc [dbo].[ExampleProc]
(@Column1 VARCHAR(MAX) 
,@Column2 VARCHAR(MAX)    
,@Column3 VARCHAR(MAX)    
)
as
Begin
    SET NOCOUNT ON;

SELECT  ITEM AS column1 INTO #tmpcolumn1 FROM [dbo].[Fn_SplitString](@column1, ',')   
SELECT  ITEM AS column2 INTO #tmpcolumn2 FROM [dbo].[Fn_SplitString](@column2, ',')   
SELECT  ITEM AS column3  INTO #tmpcolumn3 FROM [dbo].[Fn_SplitString](@column3, ',')  
select column1
        ,[column2]
        ,column3
        ,count(distinct memberid) Membercount 
    from myTable fact
    where EXISTS(SELECT column1 FROM #tmpcolumn1 tmpcol1 where tmpcol1.column1 = fact.column1)    
      AND EXISTS (SELECT column2 FROM #tmpcolumn2 tmpcol2 where tmpcol2.column2 = fact.column2)    
      AND EXISTS (select column3 from #tmpcolumn3 tmpcol3 where tmpcol3.column3 = fact.column3) 
      Group by column1
        ,column2
        ,column
        ,column3
END

我正在使用split函数,如果参数在这里发送,用逗号分隔。在此函数中,它将拆分逗号并将记录作为列插入临时表中。

任何人都可以验证此问题吗?

0 个答案:

没有答案