Database design 数据库模式重构以优化性能和空间
我正在开发SQL SERVER 2012 Express Edition(我不是数据库架构师,只是c#dev),我有一个表,它有30列和1000多万行Database design 数据库模式重构以优化性能和空间,database-design,sql-server-2012,database-schema,database-performance,Database Design,Sql Server 2012,Database Schema,Database Performance,我正在开发SQL SERVER 2012 Express Edition(我不是数据库架构师,只是c#dev),我有一个表,它有30列和1000多万行 CID PID DID FID DateTimeStamp P01 P02 P03.....P30 CI1001 PI1001 DI1001 30 2017-04-02 9:14 12 230 230 CI1001 PI1001 DI1002 51 2017-04-02 9
CID PID DID FID DateTimeStamp P01 P02 P03.....P30
CI1001 PI1001 DI1001 30 2017-04-02 9:14 12 230 230
CI1001 PI1001 DI1002 51 2017-04-02 9:14 34 3430 3430
CI1001 PI1001 DI1003 5 2017-04-02 9:14 56 340 340
CI1001 PI1001 DI1004 4 2017-04-02 9:14 78 340 340
CI1001 PI1001 DI1005 5 2017-04-02 9:14 33 340 340
我在当前模式中面临的问题是
CID PID DID FID PCODE DateTimeStamp Value
CI1001 PI1001 DI1001 30 C1 2017-04-02 9:14 230
CI1001 PI1001 DI1002 51 C2 2017-04-02 9:14 3430
CI1001 PI1001 DI1003 3 C3 2017-04-02 9:14 340
CI1001 PI1001 DI1004 4 C3 2017-04-02 9:14 340
CI1001 PI1001 DI1005 5 C5 2017-04-02 9:14 340
有了这个模式,我确信这将允许在运行时添加任意数量的列,但我不确定是否会通过这个模式获得任何性能和大小的提高。
有人能建议一下这种方法是否正确,或者对如何设计这样一个模式有什么建议吗
已编辑
有了这个模式,我上面解释的问题中的3个得到了修复,我对此进行了一些试运行,只使用了一个索引,我的所有查询集都运行顺利,因此性能不是问题,而是空间,因为它消耗的空间是前一个的7倍
下面是两个表的模式
主交易表:-
ClientID varchar(8)
PlantID varchar(8)
DeviceID varchar(8)
FeederID tinyint
PCODE varchar(10)
Dates date
TimeStamp time(7)
VALUE decimal(19, 3)
选项卡,每个列具有唯一代码
ClientID varchar(8)
PlantID varchar(8)
PCODE varchar(10)
PARANAME varchar(15)
因此,我正在考虑更改表模式,是否有人能就如何设计这样的模式提出建议?我认为这种方法在您的情况下会起作用。确保每列都具有适当的数据类型以减小存储大小,如果可能,则避免将任何大列作为索引中的键列。请使用文本,而不是图像/链接作为文本,包括表和ERD。图像/链接中的文本内容无法搜索、剪切和粘贴。为什么要引入PCODE-PNAME/PARANAME间接寻址?仅仅是因为varchar(10)和varchar(15)之间的空间差异?
ClientID varchar(8)
PlantID varchar(8)
PCODE varchar(10)
PARANAME varchar(15)