如何优化需要获取多个连续的记录,并且会经常插入的表(添加了聚簇索引的表)? 本帖最后由 shendaowu 于 2013-04-24 09:33:27 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这种方法,并没有在其它数据库产品中被应用。一些数据库产品根本不支持 聚簇索引而支持 聚簇索引 的数据库,则只能在插入效率和SELECT效率中取得平衡,而数据库设计者需要考虑如何去平衡选择。楼主的方法不错,但需要考虑一下 N条记录随意插入临时表后,再从临时表插入到主表后,同样会需要相同的开销。 我举个例子吧,这样(两个表都只列出了设置了聚簇索引的列):表A:12345614151756585960表B:7816100101建立一个临时表T,具体的合并操作如下(->是插入的意思):A.1->TA.2->TA.3->TA.4->TA.5->TA.6->TB.7->TB.8->TA.14->TA.15->TB.16->TA.17->TA.56->TA.58->TA.59->TA.60->TB.100->TB.101->T问题是这个操作能否通过数据库管理系统来自动完成,如果能自动完成的话,那么理论上移动的次数应该是二倍的表A的长度加上表B的长度,或者直接是二倍的表A的长度,因为表B的长度可能远小于表A。而如果每次插入都直接插入到表A中的话,那么平均移动次数应该是(n+1)/2。平均只要插入四次就和上面的移动次数一样了。 请教各位MySQL 是否可以将OS用户映射为database用户 mysql 同步数据到 mssql sql 如何修改字符串中某个字符 求一个简单的SQL问题 mysql在linux下怎么启动服务? 为什么我在mysql.user中插入了一个用户,如下: 一个很难的问题,大神来回答吧 utf8_general_ci 查询时中文问题 [Err] 1286 - Unknown storage engine 'ndbcluster' 动态sql的问题,请高人指点 嵌入式LINUX与windows共用数据库的问题 mysql 查询问题
而支持 聚簇索引 的数据库,则只能在插入效率和SELECT效率中取得平衡,而数据库设计者需要考虑如何去平衡选择。楼主的方法不错,但需要考虑一下 N条记录随意插入临时表后,再从临时表插入到主表后,同样会需要相同的开销。
表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。平均只要插入四次就和上面的移动次数一样了。