我的應用程序使用JPA和Hibernate,我發現hibernate在我的日誌文件中生成了一些有趣的SQL查詢,並且有很多連接。該應用程序現在沒有很多用戶,我擔心一些由hibernate生成的查詢會在數據庫規模增大時導致問題。SQL查詢解釋的結果是否取決於數據庫的大小?
我已經通過EXPLAIN命令運行一些由休眠生成的sql查詢來查看生成的查詢計劃。
EXPLAIN的輸出是否依賴於數據庫的大小?當我的數據庫大小增長時,查詢規劃器會爲相同的SQL查詢生成不同的計劃?
在開發/部署週期中的什麼時候我應該查看由休眠生成的SQL查詢的SQL查詢計劃?什麼時候適合使用EXPLAIN?
如何解釋的輸出用於確定查詢是否會成爲問題,當數據庫非常小以至於每個查詢無論在0.5秒內運行多麼複雜?
我使用Postgres 9.1作爲我的應用程序的數據庫,但我對上述問題的一般答案感興趣。
智能數據庫使用* statistics *來幫助對如何創建計劃進行有根據的猜測。這些*統計*可能會隨着新數據的變化而變化。確切的範圍,收集,提示等都是非常特定於數據庫的。但是,這很可能不是現在需要擔心的事情:)只要專心創建一個乾淨的模型。 – 2012-09-07 07:35:56
@pst所以這意味着當數據庫仍然很小時,它是無意義的解釋。 – ams
請注意,對於PostgreSQL版本比即將發佈的9.2更早版本,您應該'PREPARE'語句然後'EXPLAIN EXECUTE'它匹配Hibernate將如何執行您的語句。準備和未準備的報表中的查詢計劃在9.1和更低版本中可能有所不同。 –