Базовая информация: это в контексте процесса индексации данных OpenStreetMap.Для упрощения вопроса: основная информация делится на 3 основных типа со значениями «W», «R», «N» (VARCHAR(1)
).
Таблица содержит около 75 миллионов строк, все столбцы с буквой «W» составляют около 42 миллионов строк.Существующие индексы не имеют отношения к этому вопросу.
Теперь сам вопрос: индексирование данных выполняется с помощью процедуры.Внутри этой процедуры есть несколько циклов, которые выполняют следующее:
[...] SELECT * FROM table WHERE the_key = "W";[...]
Результаты снова зацикливаются, и сам запрос выше также находится в цикле.Это занимает много времени и значительно замедляет процесс.Индекс the_key
, очевидно, бесполезен, поскольку все значения, которые может использовать индекс, одинаковы («W»).Сам скрипт работает со скоростью, которая в порядке, только SELECT
IN занимает очень много времени.
Нужно ли
- создать индекс «специального» типа, которыйпринимает это во внимание и делает
SELECT
быстрее?Если да, то какой? - нужно настроить некоторые параметры сервера (они уже настроены, и результат, который они доставляют, кажется хорошим. При необходимости я могу опубликовать их)?
- приходится жить со скоростью и просто получать больше оборудования, чтобы получить больше энергии (Тим Тейлор ворчит ворчит )?
Любые альтернативы вышеуказанным пунктам (кроме переписывания или нет)с его помощью)?