Если поиск фильтруется по article_number
, то для него должен быть создан индекс. Не совсем уверен, что еще вы спрашиваете.
Индекс по умолчанию - btree, и он будет работать нормально. Если вы проверяете только на строгое равенство, hash
также может быть вариантом, но у него есть проблемы до Postgres 10, поэтому я бы не рекомендовал его.
Другие типы индексов предназначены для более сложных форм Запросы или пользовательские типы данных, нет причин даже рассматривать их, если вы просто хотите выполнить фильтры равенства.
- btrees полезны для строгого равенства и поиска по диапазону (который включает поиск по префиксу, например,
foo like 'bar%'
) - ha sh индексы полезны только для строгого равенства, они могут быть быстрее и меньше, чем btrees в некоторых редких случаях
- Индексы GIN полезны, когда у вас есть несколько значений индекса на строку (массивы, json, gis, некоторые случаи FTS)
- Индексы GiST полезны для более сложных запросов, чем равенство и диапазон (geom / gis, FTS)
Я никогда не изучал Индекс BRIN, так что я не уверен, каким будет их вариант использования. Но я понимаю, что нет никакого случая, чтобы даже рассмотреть это, прежде чем у вас будет огромное количество строк.
В основном, используйте btree, если вы не знаете , что вы не можете.