При поиске строк в очень длинной таблице (~ 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