2014-11-22 87 views
-1

只是有興趣,也許有人可能知道這一點。如果我使用延遲加載來獲取所有屬性,關係等等,則對數據庫進行約350次查詢,完全呈現頁面需要大約2秒。如果我使用多個連接創建一個大型查詢來獲得所有我需要的關係,那麼這會造成〜20個查詢,其中一個非常大,問題是這個大型查詢第一次需要大約10秒才能執行,之後它會被緩存,速度更快,整個頁面加載時間大約爲1.5秒,但問題是每個用戶對該查詢都有不同的參數,因此每個用戶第一次使用它的時間爲10秒。爲什麼第一次使用這麼久?doctrine2多查詢VS加入

回答

0

請問,如果您使用的是存儲過程?我添加了一個使用存儲過程https://docs.oracle.com/cd/F49540_01/DOC/java.815/a64686/01_intr3.htm的優點的鏈接。你能給不同的用戶提供一些參數的例子嗎?

感謝

+0

不,我沒有使用它們,因爲我的網站仍在不斷髮展,我可能需要多次更改數據庫結構,目前它不是那麼大的問題,但我對未來有點想。 關於參數: 被阻止的用戶。因爲我正在使用其他查詢和。 – user2118788 2014-11-22 20:18:45

+0

@ user2118788如果要獲取大量結果,最好開始使用存儲過程,因爲它們會提高查詢的性能。這只是一些需要思考的問題。如果查詢數量增加,將所有查詢轉換爲存儲過程的任務將變成一件龐大的事情。 – mfredy 2014-11-24 11:07:10

0

當你給的數據基礎架構沒有任何信息,數據大小等參數是非常難以確定的糟糕表現的根本原因。但是,StackOverflow中有another answer這可能是進一步調查的一個很好的起點。

一般考慮以下幾個問題展開調查/優化:

  • 真的需要你從數據庫中獲取(一次)的信息?
  • 數據庫是否針對您執行的查詢進行了優化?
  • 您需要多久執行一次查詢?如果緩存它們,緩存的使用頻率有多少?