индексе может ссылаться на несколько страниц, а не на вязанку в разных местах?
Нет, не только. Я же написал выше, в чём ещё он может быть, нет? Ещё вариант — запросы вроде SELECT * FROM t ORDER BY key_the_table_was_clustered_on LIMIT 100; даже если используется seq.scan.
Забыл упомянуть, спасибо
И легко же проверить: CREATE UNLOGGED TABLE test_cluster ( id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, val numeric NOT NULL ); INSERT INTO test_cluster(val) SELECT floor(random() * 100000) FROM generate_series(1, 1000000) AS g(n); После этого варианты выполнения SELECT * FROM test_cluster ORDER BY val; с/без индекса `CREATE INDEX ON test_cluster(val); ` и до/после кластеризации (и удаления этого индекса): Base Execution Time: 520.825 ms (quicksort) Index Execution Time: 387.378 ms Index + cluster Execution Time: 120.418 ms Just cluster Execution Time: 233.251 ms
а на что тут ориентируется планировщик? на correlation в статистике?
Обсуждают сегодня