相同的查询在postgresql的不同版本中给出不同的结果!

时间:2010-06-26 15:06:53

标签: postgresql

民间,

我在两个不同的服务器上运行下面的查询,这个服务器有不同版本的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”排序;

Server1:db details-> i486-pc-linux-gnu上的PostgreSQL 8.3.9,由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 / 维杰

1 个答案:

答案 0 :(得分:2)

我的猜测是数据库在不同的语言环境中运行。比较

的输出
SHOW lc_collate;

在两个数据库上。

在升级系统时不要将它们设置为相同是一个相当常见的错误,这可能会导致像ORDER BY,DISTINCT和GROUP BY这样的操作来提供不同的结果。