民间,在不同版本的postgresql中给出不同结果的相同查询!
我在两个不同的服务器中运行给出下面的查询,它有不同版本的postgresql,这给出了奇怪的结果。 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“排序;
服务器1:分贝详情 - >上的i486-PC-Linux的GNU,通过GCC GCC-4.3.real编译的PostgreSQL 8.3.9(Debian的4.3.2-1.1)4.3.2 EXPLAIN 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次的记录和结果 server1的:该查询的输出 - > 82011个记录 服务器2:该查询的输出 - > 53146个记录
为为我可以在服务器2中看到使用Hashaggregate方法,而server1使用groupaggregate?
有人可以解释哪一个是我应该信任的服务器结果?
BR/ 维杰
您可以发布一个最小且完整的示例来重现您看到的内容,以便我们也可以为自己运行吗?创建一个最小的示例尽可能多地从查询中删除表和列中的行,同时保留查询结果仍然不同。为了使您的示例完整,请发布create table语句和insert语句。 – 2010-06-26 15:11:05
只显示真正的解释分析输出。您显示了查询的输出,其中第一个返回8202行,第二个返回5行。 – 2010-06-26 18:47:36
您的服务器1返回所有记录。两台服务器上的所有行都有“L”= 1吗?你可以发布'解释分析'输出,而不是简单的'解释'。 – Tometzky 2010-06-28 13:39:24