2016-09-28 71 views
0

我正在使用Sqlite.Net構建移動應用程序,並且遇到了Indexed屬性。這顯示在這裏的例子:https://github.com/praeclarum/sqlite-net#example-time什麼時候在Sqlite.Net類上使用了Index屬性?

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屬性用於和我需要它?

回答

2

,但查詢表時,它一定會達到SQLite的引擎來確定指標

沒有,指標必須預先定義並保持着插入,更新和刪除。查詢運行時,引擎可以決定使用或忽略哪些索引,但不能創建索引。

因此,外鍵上的[Indexed]屬性是一個適當的手動優化。

+0

如果我在'Valuation'表中插入了一個新行,例如沒有定義'Index'屬性,你是說'index'不會在Sqlite數據庫上更新嗎? – user1

+0

如果沒有該屬性,則沒有要更新的索引。 –

相關問題