我创建了一个存档表,它将存储数据以供选择。
每天都会有一个程序将一批记录传输到存档表中。有几列被索引;而其他人则没有。
我担心每批插入的时间成本:
- 第一批插入:N1
- 第二批插入:N2
- 第3批插入:N3
问题是:N1,N2和N3大致相同,或者N3> N3。 N2> N1?
也就是说,时间成本是常数还是增量,存在多个指标?
所有索引都是非群集的。
归档表结构如下:
create table document (
doc_id int unsigned primary key,
owner_id int, -- indexed
title smalltext,
country char(2),
year year(4),
time datetime,
key ix_owner(owner_id)
}
答案 0 :(得分:2)
费用将是增量,O(log(n))
。
实际上,当索引大小达到某个阈值并且索引页将停止适应缓存时,您将在图表上有一个步骤
缓存的大小由key_buffer_size
中的MyISAM
和innodb_buffer_pool_size
中的InnoDB
定义。
在此阈值之前,成本将与内存寻道时间成正比,在阈值之后,成本将与磁盘寻道时间成正比(当然全部乘以log(n)
)