日期:2014-05-18  浏览次数:20422 次

求最好的SQL忧化方法,35W数据进行检测对指定字符串是否有重复值,奇慢无比,完成花费时间是18 秒呀,真让人无法接受,
 
江湖救急!

35W数据进行检测对指定字符串是否有重复值,奇慢无比,完成花费时间是18 秒呀,真让人无法接受,
我的SQL 语句如下:

SQL code

--数据库内有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 秒呀,真让人无法接受,

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

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