2017-06-14 30 views
4

哪個表結構在2以下更好?查詢性能:單列vs多列

enter image description here

OR

enter image description here

在第一個查詢

我使用LIKE運營商查詢。 在第二我使用AND運營商。

第一個表格設計在選擇數據方面比第二個表格有什麼優勢? 我需要在第一個表格結構和第二個表格結構之間做出什麼決定?

+7

第一個表格包含原始未格式化的非標準化數據。查詢費用高昂,維護成本高。我給了第二張桌子兩個大拇指。 –

+1

第二種結構方式更好 也許以後您需要過濾類型或貨幣 –

+0

select * from table 1其中,measurement_name如'%Type = ODO Currency = EUR%';或者從table2中選擇*,其中type ='ODO'和Currency ='EUR';哪些工作更快? – karz

回答

1

如果您不需要以任何方式使用TypeCurrency屬性並且您始終只使用存儲爲MEASUREMENT_NAME的全部文本,則第一種方法會更好。

如果您打算分別使用TypeCurrency屬性的值,比如在條件等方面使用它們的值,那麼第二個選項將是更好的選擇。

還可以最終創建一個包含整個文本MEASUREMENT_NAME和分隔值TypeCurrency &用於濾波目的的組合結構。這會在磁盤上佔用更多空間並且不會進行優化,但是整個文本或MEASUREMENT_NAME未來也可能最終包含現在未知的屬性。這可能是以原始格式存儲MEASUREMENT_NAME的原因。

如果屬性MEASUREMENT_NAME不是您從外部獲取的東西,而是您自己創建的數據結構,並且您尋求一種如何以靈活(更改)結構存儲記錄的方式,則最好將其存儲爲JSON或XML數據,Oracle有built in functions for JSON data

我還建議使用TypeCurrency值的鏈接表,以便主表只包含ID鏈接作爲外鍵。

1

第二張表明顯優於第一張。如果您必須從第一個表格查詢類型或貨幣,則可能必須使用右側,左側或任何其他功能。 另外,如果您對齊第二個表格的鍵/約束,請遵循第二個標準格式。