2

我创建了一个存档表,它将存储仅用于选择的数据。

每天都会有一个程序将一批记录转移到存档表中。有几列被索引;而其他人则不是。

我关心每批插入的时间成本:
-第 1 批插入:N1
-第 2 批插入:N2
-第 3 批插入:N3

问题是:N1、N2、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)
}
4

1 回答 1

2

成本将是递增的,O(log(n)).

在实践中,当索引大小达到某个阈值并且索引页面将停止适合缓存时,您将在图上迈出一步

缓存的大小由key_buffer_sizeinMyISAMinnodb_buffer_pool_sizein定义InnoDB

在此阈值之前,成本将与内存寻道时间成正比,在阈值之后,成本将与磁盘寻道时间成正比(log(n)当然都是乘以)

于 2010-03-19T14:36:38.563 回答