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()进行基准测试,看看是否是这种情况.