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

xmjla07d  于 6个月前  发布在  PostgreSQL
关注(0)|答案(1)|浏览(109)

各位,
我在两个不同的服务器上运行下面的查询,这两个服务器有不同版本的postgresql,结果很奇怪。
从ABC中选择不同的“D”、“E”、“A”、“B”、“F”、“C”、“G”、“H”、“I”、“J”、“K”、“L”,其中“L”=1组,按“D”、“E”、“A”、“B”、“F”、“C”、“G”、“H”、“I”、“L”按“A”、“B”、“C”顺序排列;
Server1:db details->PostgreSQL 8.3.9 on i486-pc-linux-gnu,compiled by GCC gcc-4.3.real(Debian 4.3.2-1.1)4.3.2 EXPLAIN OUTPUT OF QUERY:

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条记录,结果是服务器1:查询的输出-> 82011条记录服务器2:查询的输出-> 53146条记录
至于我在服务器2中看到的使用Hashaggregate方法,而服务器1使用groupaggregate?
谁能告诉我哪个是我应该信任的服务器结果?
BR/ Vijay

3qpi33ja

3qpi33ja1#

我的猜测是,数据库运行在不同的区域设置中。

SHOW lc_collate;

字符串
两个数据库。
这是一个相当常见的错误,不设置这些相同的升级系统时,这可能会导致opretaions一样,按顺序,区分和分组按提供不同的结果。

相关问题