SQLite: Должен ли индекс использовать примерно 100% ЦП? - PullRequest
0 голосов
/ 05 июня 2019

При поиске строк в очень длинной таблице (~ 10 миллиардов строк), загрузка ЦП составляет всего около 3%, а процесс находится в D состоянии , что обычно я видел только при INSERT, а не SELECT.

Мне интересно, связано ли это с какой-то неправильной конфигурацией, и я мог бы достичь лучшего использования и тем самым ускорить SELECT.

SELECT * FROM my_table WHERE key IN (SELECT key FROM temp);

Очевидно, что соответствующий столбец key проиндексирован.

РЕДАКТИРОВАТЬ: Я забыл указать, что я ищу много строк и столбец целочисленных идентификаторов (не уникальный). Например, ищем 10000 идентификаторов, каждый из которых встречается в среднем 100 раз.

РЕДАКТИРОВАТЬ: Вот некоторые PRAGMA заявления и их результаты, если это будет полезно:

  • PRAGMA journal_size_limit; -1
  • PRAGMA journal_mode; delete
  • PRAGMA cache_size; -2000
  • PRAGMA cache_spill; 483
  • PRAGMA max_page_count; 1073741823
  • PRAGMA page_count; 340456897
  • PRAGMA user_version; 0
...