2015-09-02 83 views
1

所有的,我有一個網頁從4個Oracle數據庫的4-6個表中加載數據,每個數據庫需要大約10個模式。我所擁有的設置是一個需要在頁面的頂部,如:PHP:同時查詢多個數據庫以改善加載時間

<?php 
require_once('src/connects_client1.php'); 
require_once('src/connects_client2.php'); 
require_once('src/connects_client3.php'); 
require_once('src/connects_client4.php'); 
?> 

每個這些文件包含一個連接字符串,如:

$connClient = oci_pconnect("Login", "Password", "//database:1521"); 

等一系列的查詢和執行,如:

$dailystatusClientSCHEMA = oci_parse($connClient, 'select * from OPS$SCHEMA.DAILY_STATUS order by table_name'); 

oci_execute($dailystatusClientSCHEMA); 

這是那麼一個基於Jquery的樹視圖與一系列無序列表的和PHP foreach循環,打印數據的每行適當地對查詢結果的一部分。

某些結果集包含一千行以上的數據。這可以工作,並以可用格式顯示數據。

問題是加載需要1分52秒。這家公司的最終用戶認爲這太長了,坦率地說,我認爲這也太長了。我不是一個網絡開發人員,但這個項目對我來說是最合乎邏輯的。

是否有任何方法可以強制所有查詢以更同步的方式加載,以便數據可以更快地返回?這是一個非常快速的數據庫雲服務器環境,所以我不相信數據庫有任何瓶頸,並且Web服務器在任何時候都有輕負載,所以我不認爲這是有限制的,僅僅是我已經構建這一頁。

我真的很感謝這個人可能提供的任何解決方案。

謝謝。

+1

也許將腳本的不同部分從查詢映射到頁面中的任何其他位置,以找出瓶頸所在。它可能是查詢,拉取結果集,甚至只是在等待jquery數據表加載數據。查詢數據可能會更快,將數據保存到會話並通過客戶端的ajax進行分頁。不過,無論哪種方式,首先是使用microtime進行基準測試,找出造成瓶頸的因素並專注於此。 –

回答

0

有上select *瓶頸嘗試改變這種田裏你真正感興趣。

的RDBS必須制定出哪些字段返回,他們的名字和數據類型,以及如何分配內存。通過使用命名字段,RDBS不必計算出正在查詢的表中存在哪些字段。

+0

雖然通過我所有的研究,我發現所有我發現的內容都表明不要使用select *,以便在表結構中進行可能的更改,但是在查詢中選擇特定列與* – billhubb84

+0

更新:是的,加載時間基本保持不變,實際上基於我的秒錶實際加載速度較慢。這就是說,我感謝您的反饋,並很高興我重新編寫了查詢,而不是選擇* – billhubb84