#sql #postgresql #performance #select
#sql #postgresql #Производительность #выберите
Вопрос:
В Postgres рассмотрим таблицу с 30 миллионами строк, один столбец из которых — Страна. Представлены все страны, так что примерно 200 разных стран. Существует приложение, которое позволяет пользователю выбирать любое количество стран, и приложение должно возвращать все строки.
Таким образом, базовое решение выглядит примерно так (где приложение / пользователь выбрал 4 страны в коллекции):
SELECT *
FROM Table
WHERE Table.Country IN ('italy','france', 'sweden', 'canada');
Какое решение является более эффективным?
Комментарии:
1. Почему вы думаете, что это неэффективно?
2. когда мы пробуем это, это действительно медленно, лол
3. Проблема, вероятно, заключается в том, что вы возвращаете очень много данных. Существует всего пара сотен стран, поэтому ваш запрос, вероятно, возвращает по крайней мере несколько сотен тысяч строк, если не миллионы.
Ответ №1:
Если вы создаете индекс B-дерева для столбца, этот запрос является наиболее эффективным решением.