Когда атрибут Index используется в классе Sqlite.Net?

Я создаю мобильное приложение, используя Sqlite.Net и я встретил Indexed приписывать. Это показано в примере здесь: https://github.com/praeclarum/sqlite-net

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 атрибут используется и нужен ли он мне?

1 ответ

Решение

но при запросе таблиц, безусловно, будет зависеть от движка Sqlite, чтобы определить индексы

Нет, индексы должны быть предварительно определены и поддерживаться с помощью вставки, обновления и удаления. Когда запрос выполняется, механизм может решить, какие индексы использовать или игнорировать, но не создавать.

Итак [Indexed] Атрибут внешнего ключа - это правильная ручная оптимизация.

Другие вопросы по тегам