2013-03-08 104 views
0
SELECT a.COL1, a.COL2, b.COL3 , 
a.COL4, e.COL1 , e.COL5, e.COL6, 
e.COL7, a.COL8,b.COL9, b.COL10 , a.COL11, 
f.COL12 FROM TABLE1 a, TABLE2 b 
TABLE3 c, TABLE4 d, TABLE5 e, TABLE6 f 
WHERE a.COL1=b.COL1 and a.COL2=c.COL2 and c.COL3=d.COL3 and d.COL5='2' 
ORDER BY date(a.COL8) DESC, a.COL2 desc, a.COL1 

当使用pgAdmin的或Navicat的被返回的结果570和完成在不到一秒钟的数据库上直接执行上述查询。但是,当通过pg_query执行时,大约需要40(!)秒。Postgres的查询用PHP时间太长时,它不应该

有谁知道这是为什么?

回答

2

事实证明,答案很奇怪。我用一个函数别人在过去的某个时候写提供的连接......原来,这是使用

pg_query($db_platform, "set enable_seqscan=false"); 

难怪查询已使用该连接时坏。

+0

“'cos索引总是更好,mmmkay?”。这就是为什么我希望Pg具有查询中的提示,因为如果没有他们,人们会进行难以调试的可怕黑客攻击。提示是不好的,但这种情况更糟糕。 – 2013-03-09 00:39:34