Какой самый быстрый способ получить все элементы в SQLite? - PullRequest
3 голосов
/ 01 июня 2010

Я программирую на Windows, я храню информацию в sqlite. Однако я нахожу, чтобы получить все предметы немного медленно.

Я использую следующий способ:

select * from XXX;

извлечение всех элементов в 1,7 МБ БД SQLite занимает около 200-400 мс. Это слишком медленно. Может ли кто-нибудь помочь!
Большое спасибо!

Спасибо за ваши ответы!
Я должен сделать сложную операцию с данными, поэтому каждый раз, когда я открываю приложение, мне нужно читать всю информацию из БД.

Ответы [ 2 ]

4 голосов
/ 01 июня 2010

Я бы попробовал следующее:

  1. Очистите вашу базу данных, выполнив команду " вакуум "
  2. SQLite начинается с размера кэша по умолчанию, равного 2000 страниц. (Для уверенности выполните команду " pragma cache_size ". Каждая страница имеет размер 512 байт, поэтому похоже, что у вас есть около 1 МБайт кеша, что недостаточно для хранения вашей базы данных. Увеличьте размер кеша запустив « pragma default_cache_size = 4000 ». Это должно дать вам 2 Мбайт кеша, чего достаточно, чтобы поместить всю вашу базу данных в кеш. Вы можете запустить эти команды прагмы из командной строки sqlite3 или через запрограммируйте так, как если бы это был другой запрос.
  3. Добавьте индекс к вашей таблице на поле, с которым вы заказываете.
1 голос
/ 01 июня 2010

Вы могли бы немного ускорить его, выбрав только те столбцы, которые вам нужны, но в противном случае ничто не побьет неупорядоченный выбор без условия where для получения всех данных.

Кроме этого, более быстрый диск / процессор - ваш единственный выбор.

На каком оборудовании это установлено?

...