本帖最后由 shendaowu 于 2013-04-24 09:33:27 编辑

解决方案 »

  1.   

    这种方法,并没有在其它数据库产品中被应用。一些数据库产品根本不支持 聚簇索引
    而支持 聚簇索引 的数据库,则只能在插入效率和SELECT效率中取得平衡,而数据库设计者需要考虑如何去平衡选择。楼主的方法不错,但需要考虑一下 N条记录随意插入临时表后,再从临时表插入到主表后,同样会需要相同的开销。
      

  2.   

    我举个例子吧,这样(两个表都只列出了设置了聚簇索引的列):
    表A:
    1
    2
    3
    4
    5
    6
    14
    15
    17
    56
    58
    59
    60
    表B:
    7
    8
    16
    100
    101建立一个临时表T,具体的合并操作如下(->是插入的意思):
    A.1->T
    A.2->T
    A.3->T
    A.4->T
    A.5->T
    A.6->T
    B.7->T
    B.8->T
    A.14->T
    A.15->T
    B.16->T
    A.17->T
    A.56->T
    A.58->T
    A.59->T
    A.60->T
    B.100->T
    B.101->T
    问题是这个操作能否通过数据库管理系统来自动完成,如果能自动完成的话,那么理论上移动的次数应该是二倍的表A的长度加上表B的长度,或者直接是二倍的表A的长度,因为表B的长度可能远小于表A。而如果每次插入都直接插入到表A中的话,那么平均移动次数应该是(n+1)/2。平均只要插入四次就和上面的移动次数一样了。