Народ,
Я выполняю приведенный ниже запрос на двух разных серверах, которые имеют разные версии postgresql, которые дают странные результаты.
выберите различные "D", "E", "A"," B "," F "," C "," G "," H "," I "," J "," K "," L "из ABC, где" L "= 1 группа по" D ", «E», «A», «B», «F», «C», «G», «H», «I», «L» - порядок «A», «B», «C»;
Сервер1: подробности db-> PostgreSQL 8.3.9 на i486-pc-linux-gnu, скомпилированный GCC gcc-4.3.real (Debian 4.3.2-1.1) 4.3.2 ОБЪЯСНИТЕ ВЫХОД ЗАПРОСА:
Unique (cost=16618.27..16884.84 rows=8202 width=71)
Sort (cost=16618.27..16638.78 rows=8202 width=71)
Sort Key: "A", "B", "C", "D", "E", "F","G", "H", "I", J, K
GroupAggregate (cost=13296.68..16085.07 rows=8202 width=71)
Sort (cost=13296.68..13501.71 rows=82011 width=71)
Sort Key: "A", "B", ""C"", "D", "E", "F", "G", "H", "I", "L"
Seq Scan on exims (cost=0.00..3236.14 rows=82011 width=71)
Filter: ("L" = 1)
Server2: db details->PostgreSQL 7.4.23 on x86_64-pc-linux-gnu, compiled by GCC cc (GCC) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)
EXPLAIN OUTPUT OF QUERY:
Unique (cost=22.73..22.90 rows=5 width=361)
Sort (cost=22.73..22.75 rows=5 width=361)
Sort Key: "A", "B", "C", "D", "E", "F","G", "H", "I", J, K, "L"
HashAggregate (cost=22.65..22.67 rows=5 width=361)
Seq Scan on exims (cost=0.00..22.50 rows=5 width=361)
Filter: ("L" = 1)
для обоих серверов, которые я использую, одни и те же входные таблицы с записями 82011 и результаты: server1: вывод этого запроса -> 82011 записей server2: вывод этого запроса -> 53146 записей
что, как я вижу на сервере 2, использует метод Hashaggregate, а server1 использует groupaggregate?
Может кто-нибудь объяснить, какому результату сервера я должен доверять?
BR / Vijay