2013-03-08 46 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