Когда атрибут 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]
Атрибут внешнего ключа - это правильная ручная оптимизация.