2011-03-29 51 views
1

从我的谷歌,sqlite does't support clustered indexes(见四:聚集索引),但我不明白的是:如何sqlite的存储其内容

这意味着,如果你的指数是 顺序INTEGER,记录被 物理上 该整数为了在数据库中的布局,然后1 2 3.然后

  1. 如果有些记录是从表中删除whic h包含顺序int索引,其中放置新插入的记录?据我所知,记录int ID只会增长,所以记录会被追加到尾部,对吧?这是否意味着被删除的地方被浪费了?
  2. 在没有顺序INTEGER索引的情况下,sqlite表是一个堆表吗?即该记录将被放置在首先找到空闲空间的地方。

回答

0

1)对,记录会发生在尾部。是的,如果数据库引擎无法轻松重复使用,则可能会浪费已删除的地点。当您使用命令VACUUM压缩数据库时,未使用的地方将被删除。

2)是这样的SQL表是一个堆表。但是,索引(任何类型的)都可以精确地访问数据,就像记录被排序一样。索引是链接到记录的排序值。但新纪录并不一定放在首先找到空闲空间的地方。它们被放置在数据库引擎很好的位置,以便将它们考虑到未使用的空间和时间来编写二进制数据(发生在队列中比在中间插入更快)。