2016-11-08 88 views
0

我的問題是我們應該在什麼時候擔心從sql數據庫中要求給定的任務需要多少數據?優化數據庫查詢

可以說我有PostgreSql數據庫。我有一個產品表和產品有20個領域。

在一個系統中,一些地方實際上只需要產品ID,名稱和價格。有些人認爲,我應該只從數據庫中提出這三個字段來提高效率。但是我覺得開發者總是要做到productService.getProduct(id),然後選擇他們需要的字段,比爲這些特定字段創建單獨的類或查詢要容易得多。

是否真的很重要 - 查詢的速度 - 如果我問3或20個字段?它會增加多少負載?

(我是Java開發人員使用的「早期的優化是一切罪惡的根源。」的心態)

+1

如果您只詢問3個字段,則只有N個字段才能獲得3個字段,因此需要將更少的數據從數據庫服務器傳輸到連接的應用程序。其簡單的 – RiggsFolly

+0

主要區別將在您的客戶端和您的db +序列化/反序列化之間傳輸 –

+0

恐怕它太寬泛/主要基於意見 –

回答

1

與所有的優化,當它的事項。分析器和其他工具(例如postgres'EXPLAIN ANALYZE)會讓你知道。

實際的機制取決於很多事情;數據庫被使用,表/模式,表空間設置等等,所以不可能給出任何明確的答案,但是由於被移動的數據量是不同的,所以無論你移動10萬行還是10行列或100,000行3列。

如果從磁盤讀取相同數量的頁面,實際查詢可能看不到顯着差異,但內存和網絡使用自然會有所不同。

謝天謝地,如果原始查詢成爲瓶頸,您可以重構代碼和查詢以選擇更少的數據。