1.      1亿条记录写入时间是多少? 2.      如果在4亿条记录里面有完全重复的记录,该怎样剔重? 3.      如果只有10万条重复,你的算法大概是什么样的效率。 4.      从一张表删除10条记录,同时把这10条记录插入另外一张表中,该怎么做。 5.      关于A表3条记录,B表5条记录,左连接的最大最小数据数和内连接的最大最小数据数。

解决方案 »

  1.   

    --从简单的来4.
    insert into tb2
    select 10条数据 from tb1
    delete 10条数据 from tb15.
    左连接最大8,最小3
    内链接最大3,最小01.
    不大清楚
    估计select ... into ... from ...会快一点2.
    select 去重后的数据 into tb2 from tb13.
    我的算法...我只代表我自己 
      

  2.   

    其它的太复杂,纠正一个简单的。A表3条记录,B表5条记录
     
    内连接最大数: select * from a inner join b on 1=1   等于15条
    内连接最小数: select * from a inner join b on 1<>1  等于0条左连接最大数:select * from a left join b on 1=1  等于15条
    左连接最小数:为驱动表行数,当A为驱动表,为3条,当B为驱动表 为5条所有的连接第一步都是cross join  ,第二步 内连接 (筛选ON条件),第三步 外连接 处理没有适配的数据。 
      

  3.   


    这个貌似不对吧,以合并联接策略为例:先根据连接关键字排序,再从上到下逐条比较,匹配的行合并到结果集,不匹配的行则去除,这跟cross join不同吧。
      

  4.   

    话说嵌套循环联接是cross join还有点吻合,合并联接和哈希联接应该是完全不同的算法
      

  5.   

    5. 关于A表3条记录,B表5条记录,左连接的最大最小数据数和内连接的最大最小数据数。
    A左连接B最大15,最小3,A内连接B最大15,最小0
      

  6.   


     1.没试过了,应该符合日志记录最小化的原则。
     2.distint
     3.既然是完全重复行,
      with dups as 
      (slect *,ROW_NUMBER() OVER (partition by col1 order by col2 ) AS rn From dbo.myTB)
      while 1=1
      Begin 
      Delete top (5000) from dups where rn>1
      if @@RowCount<5000 break;
      End
     4.Delete From dbo.yourTB
       OUTPUT deleted.* INTO dbo.anotherTB
       Where codition='只删10行'
     5.Left:15,3 Inner:15,0
      

  7.   

    海量数据处理,单单从SQL 角度出发是无法回答的!硬件环境,数据处理架构都需要考虑。
    这种问题类似于面试问题,主要考察应聘者考虑问题是否周全,经验是否丰富,比如问题4:
    “4. 从一张表删除10条记录,同时把这10条记录插入另外一张表中,该怎么做。
    ”做法很多,甚至可以用一条语句完成,但是不同场合,需要不同方法,只当了解,无需在意。