3

我正在使用构建移动应用程序Sqlite.Net,并且遇到了该Indexed属性。这显示在此处的示例中:https ://github.com/praeclarum/sqlite-net#example-time

public class Stock
{
    [PrimaryKey, AutoIncrement]
    public int Id { get; set; }
    [MaxLength(8)]
    public string Symbol { get; set; }
}

public class Valuation
{
    [PrimaryKey, AutoIncrement]
    public int Id { get; set; }
    [Indexed]
    public int StockId { get; set; }
    public DateTime Time { get; set; }
    public decimal Price { get; set; }
}

正如您所看到的,该StockId列被标记为,Indexed但是在查询表时,它肯定会由Sqlite引擎来确定索引并优化查询。

所以我的问题是Indexed使用的属性是什么,我需要它吗?

4

1 回答 1

3

但是在查询表时,它肯定会由 Sqlite 引擎来确定索引

不,索引必须预先定义,并通过插入、更新和删除进行维护。当查询运行时,引擎可以决定使用或忽略哪些索引,但不能创建索引。

所以[Indexed]外键上的属性是适当的手动优化。

于 2016-09-29T10:57:52.703 回答