簡體   English   中英

多個表還是具有多個類型的單個表?

[英]Multiple tables or single table with multiple types?

我正在建立一個包含vehicles集合的數據庫。 有些是cars ,有些是卡車。 所以我有一個像這樣的表:

COLLECTIONS: id, title, description

然后,我有了更多具有每個集合中車輛清單的表格。

我可以使用多個表,如下所示:

COLLECTION_CARS: collection_id, make, model, year

COLLECTION_TRUCKS: collection_id, make, model, year

或者,我可能只有一個帶有類型字段的表,如下所示:

COLLECTION_VEHICLES: collection_id, vehicle_type, make, model, year. (And then just make the `vehicle_type` be `Car or Truck`)

主要在性能方面哪個更好?

盡管在看到您要運行的查詢之前無法估計性能,但是可以應用以下一些常規注意事項:

  • 如果COLLECTION_CARSCOLLECTION_TRUCKS的總行數很小(例如,小於一百萬),那么從性能的角度來看,該方法不太可能有所作為
  • 如果行數很大,並且您經常將卡車與汽車分開查詢,反之亦然,則使用單獨的表格可能會有所幫助
  • 如果您總是查詢汽車和卡車,則使用單個表格可能會帶來一些好處

除了性能之外,單個表為您提供了更靈活的設計,因為添加新類型的車輛(例如RV)不會改變數據庫的結構。 這也適用於查詢:想象為COLLECTION_RV添加第三個表,並更改所有SELECTCOLLECTION_CARSCOLLECTION_TRUCKS SELECT ,以便它們聯接到COLLECTION_RV

為什么不能只用一個額外的列創建一個表? 如果您對此擔心,那將是提高SQL性能的最佳選擇。

COLLECTIONS: id, title, description, type, make, model, year

在此處輸入圖片說明

在此處輸入圖片說明

只需在SQL Server中打開一個新查詢並運行以下代碼即可生成新表:

CREATE TABLE [dbo].[collections](
    [id] [int] NULL,
    [title] [varchar](50) NULL,
    [description] [varchar](50) NULL,
    [type] [varchar](5) NULL,
    [model] [varchar](50) NULL,
    [make] [varchar](50) NULL,
    [year] [numeric](18, 0) NULL
) ON [PRIMARY]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM