sqlite如何存储其内容

时间:2011-03-29 07:09:54

标签: database sqlite indexing database-indexes

来自Google,sqlite does't support clustered indexes(请参阅四:聚集索引),但我不明白的是:

  

这意味着如果您的索引是   顺序INTEGER,记录是   物理布局在数据库中   INTEGERs订购,1然后2然后3。

  1. 如果从包含连续int索引的表中删除某些记录,则会放置新插入的记录?据我所知,记录int ID只会增长,所以记录会附加到尾部,对吗?这是否意味着删除的地方被浪费了?
  2. 在没有顺序INTEGER索引的情况下,sqlite表是堆表吗?即记录将被放置在首次找到可用空间的位置。

1 个答案:

答案 0 :(得分:0)

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

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