select url from table group by url having count(*) > 1

解决方案 »

  1.   

    假设要传入url的表名称为ta,已存储100万url的表名称为tb,从ta中查找已经存在于tb中的url:
    select url from ta as a where exists(select 1 from tb where url = a.url)
      

  2.   

    按hellowork(一两清风)的做法
    最糟的情况是,每条url在tb中都不存在
    比较次数为100 * 100W次=1亿次
    会超时吗?
      

  3.   

    这个效率高些:
    select a.url from ta as a inner join tb as b on a.url = b.url
      

  4.   

    关注ing
    by the way 
     hellowork(一两清风) ( ) 信誉:100    Blog  2006-11-03 16:54:00  得分: 0  
     
     
       假设要传入url的表名称为ta,已存储100万url的表名称为tb,从ta中查找已经存在于tb中的url:
    select url from ta as a where exists(select 1 from tb where url = a.url)
      
     
    select url from ta where url in(select url from tb )
    有什么区别。
      

  5.   

    存100万条的表针对存url列做索引.
      

  6.   

    http://community.csdn.net/Expert/topic/5134/5134705.xml?temp=.8497736
      

  7.   

    select a.url from ta as a inner join tb as b on b.url = a.url
    tb在前,ta在后
    tb建聚集索引
      

  8.   

    数据无重复??LZ不要求一条语句实现吧!
    给100-200个URL建立个游标
    declare @t
    循环做
         set @t
         select @t=1 from tb where tb.url=@url
         然后 IF一下!
    这样最多扫描100-200次表,如果给url建立个聚簇索引,效率快些吧!
      

  9.   

    因为每天都要插入成千上万条url记录,如果建立聚簇索引,会引起大量的IO磁盘操作,从而造成瓶颈.例外,我想实现对传入的上百条URL筛选后要尽快返回,否则会造成程序等待超时引发异常EmeraldSword(035216):
    用游标估计不行吧,数据量太大了,浪费资源