2014-02-20 29 views
1

其中一個比SQLite文件數據庫通常快嗎?子查詢與兩個單獨的select查詢的性能如何?

子查詢是否受益於某種內部優化,還是內部處理,就好像您做了兩個單獨的查詢一樣?

我做了一些測試,但我沒有看到太大的差別,可能是因爲我的表現在太小(少於100條記錄)?

+0

只有一種方式喲回答:測試它 – 2014-02-20 21:54:05

回答

5

這取決於很多因素。兩個單獨的查詢表示兩個請求。請求具有一點開銷,但是如果數據庫位於不同的服務器上,則此權重會更大。對於子查詢和連接,數據需要合併。少量的數據可以很容易地組合在內存中,但是如果數據變大,則可能不適合,導致需要將臨時數據交換到磁盤,從而降低性能。

因此,沒有一個通用的規則來說哪一個更快。做一些測試並找出這些因素是很好的。用'真實'的數據做一些測試,並用一年後的預期數據量進行測試。

並在未來繼續測試。當環境或數據量發生變化時,性能良好的查詢可能突然變慢。

+0

這是一個奇妙的理由來使用[N-Tiered](http://stackoverflow.com/a/312197/124069)架構。能夠根據需要改變一個查詢與另一個查詢對於項目是無價的。不要[過早優化](https://en.wikipedia.org/wiki/Program_optimization),但現在以一種可以稍後修改的方式做你的工作......並且不要忘記你的測試! –