我需要創建一個表,保存包含設備id(int),logdate(datetime)和值(十進制)(SQL Server 2008)的測量值。測量總是在本季度。 00:00,00:15,00:30,00:45,01:00,01:15 ...所以我在想,定義自某個日期以來宿舍數量的整數將導致更好的性能約會時間。測量的最佳性能表設計
檢索通常會使用來完成以下事項:
-where DeviceId = x and QuarterNumber between a and b
-where DeviceId in (x, y, ...) and QuarterNumber between a and b
-where DeviceId = x and QuarterNumber = a
什麼是此表的最佳設計?
PK DeviceId int
PK QuarterNumber int
Value int
或
PK MeasurementId int
UQ QuarterNumber int
UQ DeviceId int
Value int
(UQ =唯一索引)
或完全不同的東西?
謝謝!
您期望錄製多少個季度?您希望註冊多少設備? – Andrew 2012-08-03 08:15:25
大約100.000個設備,我會爲每個設備保留大約96 * 5個宿舍。 – Bruno 2012-08-03 08:17:28
我總是傾向於選擇2.在這種情況下,我不知道哪個更好。選項2意味着你會意味着更大的表和索引,但我認爲插入會更快。我認爲對於選項1,由於PK上的聚集索引,您可能會遇到問題。 – Andrew 2012-08-03 08:25:56