Использую Postresql. Есть таблица Documents с полями: Account тип bigint Document тип bigint User тип UUID Есть 2 индекса Код (Text): CREATE INDEX "AccountDocument" ON "Documents" USING btree ("Account" NULLS LAST, "Document" NULLS LAST) WHERE ("Account" IS NOT NULL OR "Document" IS NOT NULL); Код (Text): CREATE INDEX "AccountUserDocument" ON "Documents" USING btree ("Account", "User", "Document") Для простого запроса хочу, чтобы использовался индекс AccountUserDocument Код (Text): SELECT * FROM "Documents" WHERE "Account" = 1 AND "USER" = 'dd758b54-55b3-442a-804b-8a3d311432ba'::UUID AND "Document" = 2 но используется индекс AccountDocument Код (Text): SELECT * FROM "Documents" WHERE "Account" = 1 AND "USER" = 'dd758b54-55b3-442a-804b-8a3d311432ba'::UUID AND "Document" = 2 только есть указать у индекса AccountUserDocument тип индекса gist, то он используется Код (Text): "Index Scan using "AccoutUserDocument" on "Documents" (cost=0.28..8.30 rows=1 width=73) (actual time=3.626..3.626 rows=0 loops=1)" " Index Cond: (("User" = 'dd758b54-55b3-442a-804b-8a3d311432ba'::uuid) AND ("Document" = 2))" " Filter: ("Account" = 1)" " Buffers: shared hit=73" "Planning time: 0.946 ms" "Execution time: 3.652 ms" Почитал инфу про тип gist он обычно используется для полнотекстового поиска. Вопрос почему индекс не используется с типом btree, только из-за того, что в индексе есть поле UUID?