江湖救急!35W数据进行检测对指定字符串是否有重复值,奇慢无比,完成花费时间是18 秒呀,真让人无法接受,
我的SQL 语句如下:
--数据库内有35W记录要进行检测是,declare @item_no char(50);
declare @i int;set @i=0;
set @item_no='P99-000000630092';--查询是否有重复的字段串,(当然实际字段是不相同的)
while(@i<20)                    --GridView 上有20条记录要进行检测是否重复,所以这里需要20
begin
SELECT  count(1) as temp
FROM    [v_mat_all_with_rdate] FULL join [Item_Code_table] 
ON      [v_mat_all_with_rdate].[Item_ID]=[Item_Code_table].[ItemID] 
WHERE   [v_mat_all_with_rdate].[Item_ID]=@item_no OR [Item_Code_table].[New_ItemID]=@item_no;
 set  @i=@i+1; 
end 
-- 以上是 编码检测是否重复
--以下是描述检测是否重复
declare @str char(500);
set @str='拉鏈布袋 銀色 600D國POLYL945*W825*H130mm 提手紫色并放在';
declare @k int;set @k=0;
while(@k<20)
begin
SELECT  count(1) as temp
FROM    [v_mat_all_with_rdate] FULL join [Item_Code_table] 
ON      [v_mat_all_with_rdate].[Item_ID]=[Item_Code_table].[ItemID] 
WHERE     [Item_Code_table].[New_Description]=@str or [v_mat_all_with_rdate].[Description]=@str ;
set @k=@k+1;
end
-- 完
求最好的SQL忧化方法,35W数据进行检测对指定字符串是否有重复值,奇慢无比,完成花费时间是18 秒呀,真让人无法接受,

解决方案 »

  1.   

    另外例如“SELECT  count(1) .....”这种也显然是没有必要的。只要有两条(使用一个exists子查询)就应该停止去查找了,你既然只是要查重又何必去统计出其重复个数来呢?
      

  2.   


    这是代潜 写法, 才使用,(晕!重复20遍完全一样的操作)一样的字段串,实际中,
    "set @item_no='P99-000000630092';--查询是否有重复的字段串,(当然实际字段是不相同的)"
    这个字段串是一个变量,的