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 エンジン次第です。

いいえ、インデックスは事前に定義する必要があり、Insert、Update、および Delete で維持されます。クエリが実行されると、エンジンはどのインデックスを使用または無視するかを決定できますが、作成することはできません。

したがって、[Indexed]外部キーの属性は適切な手動最適化です。

于 2016-09-29T10:57:52.703 に答える