2012-06-20 88 views
3

我不習慣使用Oracle,所以我可能不會真的問我的問題。PHP Oracle 10g非常緩慢的取回

我執行非常簡單的SELECT查詢從一個PHP5.3的Linux Apache服務器(PECL Oci8 1.4.6,客戶端11.2.0.3.0)到一個Oracle服務器(10g企業版版本10.2.0.1.0),其中I不是的管理員。

oci_parseoci_execute需要不到一毫秒,但在此之後我做的oci_fetch_array真的很慢(有時超過一秒)。

起初,我試圖通過SELECT [all the columns I need]更改SELECT *,但它仍然很慢。

我應該看什麼?

+0

有多少列正在返回以及它們是什麼類型的數據類型? –

+0

最大的表格有近100個,但是列數更少的問題相同。數據類型是日期,數字,varchar2,clob。 –

+0

你的瓶頸有可能是網絡嗎?抓取會抓取從服務器到客戶端的行,我的猜測是他們不在同一個子網上(遠程託管你的服務器?) – tbone

回答

2

試試這個:

oci_set_prefetch($statement_id, 1000); 

...或者在php.ini增加oci8.default_prefetch值。

+0

我想這樣做,但它只支持Oracle 11g(我與10g) –

+0

除非你使用遊標 - 它不應該需要11g,它實際上取決於Oracle即時客戶端,您所說的版本是11.2.0.3.0,它應該可以工作:) – Narf

+0

我已經在php.ini中有oci8.default_prefetch = 100,並且所有提取幾乎是在同一時間(從第一個到最後一個) –