У меня очень большой стол с продуктами. Мне нужно выбрать несколько продуктов с очень высоким смещением (пример ниже). В руководстве Postgresql по индексам и производительности предлагается создать индекс по столбцу, который используется в возможных условиях ORDER BY + Все персиковое, сортировка не используется. но для больших значений смещения LIMIT очень дорог. Кто-нибудь знает, что может быть причиной этого?
Следующий запрос может выполняться несколько минут.
Indexes:
"product_slugs_pkey" PRIMARY KEY, btree (id)
"index_for_listing_by_default_active" btree (priority DESC, name, active)
"index_for_listing_by_name_active" btree (name, active)
"index_for_listing_by_price_active" btree (master_price, active)
"product_slugs_product_id" btree (product_id)
EXPLAIN SELECT * FROM "product_slugs" WHERE ("product_slugs"."active" = 1) ORDER BY product_slugs.name ASC LIMIT 10 OFFSET 14859;
QUERY PLAN
-------------------------------------------------------------------------------------------------------------------------
Limit (cost=26571.55..26589.43 rows=10 width=1433)
-> Index Scan using index_for_listing_by_name_active on product_slugs (cost=0.00..290770.61 rows=162601 width=1433)
Index Cond: (active = 1)
(3 rows)