Вопрос скорее в самом SQLite, чем в UWP. Единственное, что делает в этом случае UWP - это переводит запрос LINQ в запрос SQL, который отправляется в базу данных. В этом случае это будет что-то вроде:
SELECT * FROM MyTable WHERE SomeValue == @someValue AND UserId = @userId
Теперь порядок, в котором перечислены условия условия WHERE
, не имеет значения . Перед выполнением запроса SQLite подготовит план выполнения , который попытается выбрать наиболее эффективный порядок оценки. Здесь он в первую очередь будет определять приоритеты индексированных столбцов - поэтому, если вы хотите улучшить производительность, это то, с чего следует начинать.
Создание индекса в SQLite аналогично любой другой базе данных:
CREATE INDEX idxUserId ON MyTable (UserId);
Вы можете даже включить несколько столбцов:
CREATE INDEX idxUserIdSomeValue ON MyTable (UserId, SomeValue);
Когда вы настраиваете индекс, БД по существу будет поддерживать отсортированный порядок строк в таблице, чтобы обеспечить невероятно быстрый двоичный поиск, что идеально поможет вашему сценарию. Также обратите внимание, что основной столбец всех таблиц автоматически индексируется.
Для получения дополнительной информации об индексах SQLite см. эту замечательную статью Джейсона Файнштейна .