领域中的索引属性

时间:2016-06-04 13:58:13

标签: swift indexing swift2 realm indexeddb

我注意到Realm支持索引属性。但并非所有数据库系统都支持这一点(或者默认情况下没有显式声明)。

请解释为什么需要它,以及与使用主键不同的原因。然后,另一个允许加速查询。但那么为什么不只使用主键?

很明显,可以索引多个属性,但为什么呢?也就是说,我不代表真正的问题,没有使用索引不能做(或者可能,但在编程方面会令人厌恶)。举几个简单解释索引优点的任务示例:如何在没有索引的情况下进行索引,以及使用索引。结果很明显,“在脸上”。

我使用Swift。

对不起我的英语9(◕‿◕)6

1 个答案:

答案 0 :(得分:1)

我认为大多数其他数据库系统需要一个明确的声明,与Realm相同。

(例如,MySQL CREATE TABLE test(id int, no int, INDEX(id,no));CREATE INDEX id_index ON test(id); ALTER TABLE test ADD INDEX id_index(id);,SQLite CREATE INDEX nameindex ON user(name);

因为索引是空间和时间之间的权衡,所以在每个INSERTUPDATEDELETE查询中牺牲了一些额外的磁盘空间和一点CPU开销使你的查询大多数(如果不是全部)更快。

在大多数数据库系统中,创建索引需要显式声明。选择要创建索引的列是程序员的责任。

境界也是一样的。索引属性将极大地加速查询属性相等的查询(即=IN运算符),代价是插入速度较慢。

https://realm.io/docs/swift/latest/#indexed-properties

在大多数移动应用程序中,由于搜索的执行次数多于更新,因此索引在大多数情况下都能正常运行。