sql – 将排序数据插入Sybase表是否更快?

Sybase中的表具有唯一的varchar(32)列和一些其他列.它也在此列上编入索引.

我需要定期截断它,并用其他表中的新数据重新填充它.

insert into MyTable  
  select list_of_columns  
  from OtherTable  
  where some_simple_conditions  
  order by MyUniqueId  

如果我们处理几千行,如果我们有select的order by子句,它会帮助加速插入吗?如果是这样,这个时间上的收益是否会补偿订购选择查询所需的额外时间?

我可以尝试一下,但目前我的数据集很小,结果并不多.

最佳答案 只有几千行,即使它快一点,你也不太可能看到很多差异.如果您预计接近10,000行左右,那么您可能会开始看到明显的差异 – 尝试创建大型测试数据集并进行基准测试以确定它是否有帮助.

但是,由于您正在截断,删除和重新创建索引应该比插入具有现有索引的表更快.同样,对于一个相对较小的表,它应该无关紧要 – 如果一切都可以舒适地适应您可用的RAM量,那么它将非常快.

另一个想法 – 取决于Sybase如何进行索引,传递排序列表可能会降低它的速度.尝试对ORDER BY RANDOM()进行基准测试,看看是否是这种情况.

点赞