代码之家  ›  专栏  ›  技术社区  ›  refulgentis

核心数据中的“索引”到底是什么?

  •  3
  • refulgentis  · 技术社区  · 14 年前

    作为对我昨天问的一个问题的回答( New Core Data entity identical to existing one: separate entity or other solution? ),有人建议我索引一个属性。

    在Google上搜索了很多SQLite/Core数据中的“索引”之后,恐怕我还不太清楚它到底是什么,或者它是如何基于属性加速抓取的。请记住,我对SQLite/数据库基本一无所知,只知道一个模糊的概念,这个概念是基于过去几个月对核心数据的大量阅读。

    3 回复  |  直到 8 年前
        1
  •  4
  •   TechZen    14 年前

    简单地说,索引是一种预排序。如果您有数字属性索引,则存储将按数字顺序维护链表。如果您有一个文本属性,它将按字母顺序维护一个链表。根据算法的不同,它还可以维护其他类型的属性信息。它将数据存储在附加到持久存储文件的索引中。

    它使得基于索引属性的获取速度更快,同时兼顾了更大的文件大小和稍慢的插入速度。

        2
  •  2
  •   mt3    14 年前

    索引与你在书后找到的索引几乎相同。因此,如果你想找到某个单词出现在哪一页,你可以按字母顺序浏览,这样就可以很快找到该单词出现的所有页面。

    如果没有索引,那么用户将不得不逐字浏览每一页,这可能需要相当长的时间。因此,索引几乎只以这种方式创建一次,而不是每次用户希望搜索时都创建一次。

        3
  •  1
  •   gak    14 年前

    Wikipedia 对数据库索引有很好的解释:

    “数据库索引是一种数据结构,它以较慢的写入速度和增加的存储空间为代价,提高了对数据库表的数据检索操作的速度。”