SQLite обычно выбирает очень быстро.Если вы отправили несколько примеров запросов, вам, вероятно, будет легче помочь.
Однако, это говорит: если у вас есть запрос с простым предложением WHERE, который выполняется медленно, у вас, вероятно, нет индексана столбце, который ищется.Добавьте одну.
2500 записей в таблицу НЕ большой для SQLite.25 000 000 было бы большим.
Когда вы работаете с SQLite, вы можете много чего протестировать на рабочем столе, используя оболочку sqlite3.Например, если ваш запрос выглядит примерно так:
SELECT * FROM MyTable WHERE Column='A';
Вы можете сделать что-то вроде этого:
EXPLAIN QUERY PLAN SELECT * FROM MyTable WHERE Column='A';
Если вы увидите вывод, подобный этому:
0|0|TABLE MyTable
Это означает, что SQLite сканирует всю таблицу, чтобы получить результаты.
В этом случае добавление индекса поможет:
CREATE INDEX MyTableColumn ON MyTable(Column);
Затем приведенное выше объяснение даст вам нечто подобноевместо этого:
0|0|TABLE MyTable WITH INDEX MyTableColumn
Если ваше предложение WHERE более сложное, вам может потребоваться создать составной индекс, поскольку SQLite будет использовать только один индекс для таблицы.
CREATE INDEX MyTableFirstSecond ON MyTable(First,Second);
Так что вваш случай:
- Загрузите вашу базу данных на Mac.
- Используйте оболочку, чтобы определить, какие из ваших запросов медленные.
- Изучите запросы, чтобы понять, почему ониМедленно: что нужно проиндексировать?И менее вероятно: что делать с запросом неудобно, мешая оптимизатору запросов выбрать разумный план?
- Добавить соответствующие индексы или настроить запрос.
- Повторно проверить, чтобы убедиться, что изменениеработает.
Практическое правило с SQLite простое: если вы собираетесь искать по нему, его следует проиндексировать.