2010-07-08 46 views

回答

0

這叫做vertical partitioning它可以減少I/O,如果你可以將不經常使用的列分離到它們自己的表中,但是可能會增加開銷if大部分查詢最終都會加入表格,特別是如果兩張表格都在同一張光盤上。

0

查詢返回的列數可能會影響性能 - 建議僅返回所需的列。

由於其他原因(稱爲規範化),將重複的信息分離成單獨的表格會更好 - 例如,如果您有工作的候選人,您不希望每個工作人員都有多個專欄申請人 - 你最好有一張申請表,一張工作表和一張連接兩者的應用程序表。

具有寬表可以影響自己的表演權爲好,因爲每個記錄比較大,這意味着更多的盤試圖通過表掃描(這裏有警告,這在很大程度上取決於所使用的數據類型)

1

表中的列總數可能會嚴重影響性能。一個寬表可能需要爲每一行加載大量數據,除非您仔細地僅回收每個查詢中需要的列。

此外,表格中的大量列可能是設計缺陷和缺乏標準化的指示。

如果您的索引設置正確,則行數會減少。

+0

是什麼意思,如果我仔細精煉我的sql語句以檢索有限數量的列,它不會是性能問題? – Ben 2010-07-08 13:44:06

+0

@Ben:這可能會有所幫助,但在此之後它還可能取決於您正在存儲和檢索的數據類型(100個單字符列與100個BLOB列)以及您使用的數據庫系統 - 不同的供應商可能都在同一個表中處理大量列的方式不同(也可能有不同的優化)。 – FrustratedWithFormsDesigner 2010-07-08 13:46:54

0

不,列數也會影響性能。更多列意味着更多需要處理的數據。更多列會影響驅動器上的佈局,這可能會影響性能。

所有這一切在很大程度上取決於你的數據,你的查詢,以及如何你根據你的查詢調整您的數據庫和表(例如適當的索引。

開始剖析和你之前,你的實際數據和查詢測試如果你只是猜測你會猜錯你會猜錯

0

如果您執行select *...或嘗試更新/插入一行並更改每列,或者索引了很多列,則一個非常寬的表(數十到數百列)將肯定會導致性能問題。

-1

列號和行號都會影響性能。

如果您擔心性能問題,您可能希望僅創建用於連接的列的視圖。另一種選擇是創建索引,但只有在表不經常更新時才使用索引。

除非您有超過1000條記錄或超過15列,否則您不必擔心性能。

+0

1000條記錄和15列非常隨意。它確實取決於每種數據的類型,並且即使在少於十幾行的表中也應該在搜索列上有索引,否則優化器可能會決定忽略參考表。最後,意見不能像那樣工作。大多數視圖最終只是一個MERGE視圖,它只是修改您的SQL,而不是創建實際表數據的子集。 – Zimzat 2011-06-27 13:46:58