鑑於我們在關係數據庫中有一個大表,我們需要查詢。它是否會將大表查詢拆分爲對錶子集的多個查詢?
我們有兩個選擇:
- 查詢整個表
- 表即行內數據的查詢子集從1到1000,然後一零零一年至2000年等
這是否分離有一定意義?
它依賴於查詢結構嗎?
讓我們來添加一些數學。給定一些查詢執行時間與n^3成正比,其中n是表中的行數。這意味着在第一種情況下查詢執行時間與n^3成正比。至於第二種選擇 - 它的不同。總時間將是(n/3)^ 3 +(n/3)^ 3 +(n/3)^ 3 = n^3/9,這是更好的。
現實生活更復雜:在這種情況下查詢不會相同,我們必須花費一些時間將行限制到子集。
也可以限制數據庫的連接數和併發數,因此我們無法同時通過10個查詢來查詢它,例如,至少以相同的速度。
但這些理由有道理嗎?這可以幫助減少一些大桌子的時間開支嗎?
你是真的在檢索整個表格還是應用一個條件;如果你正在過濾,你在過濾的列上有索引嗎?你從哪裏得到n^3數字? –
我不認爲有可能回答這個問題,因爲它依賴於數據和數據庫的設置。我可以提供的最好建議是嘗試兩種方式並使用最好的方法。祝你好運。 –
另外,你的數學是關閉的。 (n/3)^ 3 =(n^3)/ 27。但是,對於您的斷言「查詢執行時間與n^3成比例」,我沒有看到任何支持。你從哪裏得到那個的?爲什麼它不是「與n」或「n^2」或「e^n」或「n^e」成比例?另外 - 這張桌子有多少行?或者,「大」是什麼意思? –