0

只是为了找出我在生产环境中的数据库大小,我只是用 150 万行几乎相同的数据(主键除外)填充了我的表。它目前显示 261 MB...

现在,我是否可以依赖它,或者由于所有其他列上的数据几乎相似,SQL 服务器已经压缩了大小。IE。如果每行中的值不同,大小是否会不同...

此外.. 甚至列是否会为空值增加数据库的大小?

谢谢你的时间...

编辑:这是我的架构......我也做了一些索引......

    CREATE TABLE [dbo].[Trn_Tickets](
        [ObjectID] [bigint] IDENTITY(1,1) NOT NULL,
        [TicketSeqNo] [bigint] NULL,
        [BookSeqNo] [bigint] NULL,
        [MatchID] [int] NULL,
        [TicketNumber] [varchar](20) NULL,
        [BarCodeNumber] [varchar](20) NULL,
        [GateNo] [varchar](5) NULL,
        [EntryFrom] [varchar](10) NULL,
        [MRP] [decimal](9, 2) NULL,
        [Commission] [decimal](9, 2) NULL,
        [Discount] [decimal](9, 2) NULL,
        [CashPrice] [decimal](9, 2) NULL,
        [CashReceived] [decimal](9, 2) NULL,
        [BalanceDue] [decimal](9, 2) NULL,
        [CollectibleFrom] [char](1) NULL,
        [PlaceOfIssue] [varchar](20) NULL,
        [DateOfIssue] [datetime] NULL,
        [PlaceOfSale] [varchar](20) NULL,
        [AgentID] [int] NULL,
        [BuyerID] [int] NULL,
        [SaleTypeID] [tinyint] NULL,
        [SaleDate] [smalldatetime] NULL,
        [ApprovedBy] [varchar](15) NULL,
        [ApprovedDate] [smalldatetime] NULL,
        [InvoiceStatus] [char](1) NULL,
        [InvoiceRefNo] [varchar](15) NULL,
        [InvoiceDate] [smalldatetime] NULL,
        [BookPosition] [char](2) NULL,
        [TicketStatus] [char](2) NULL,
        [RecordStatus] [char](1) NULL,
        [ClosingStatus] [char](2) NULL,
        [ClosingDate] [datetime] NULL,
        [UpdatedDate] [datetime] NULL,
        [UpdatedUser] [varchar](10) NULL,
     CONSTRAINT [PK_Trn_Tickets] PRIMARY KEY CLUSTERED 
    (
        [ObjectID] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]

希望这可以帮助

4

2 回答 2

3

SQL Server 2005 和 2008 Express 不会压缩您的数据。SQL Server 2008 可以使用页面压缩,但只能在企业版上使用。NULL 列在行中占据一位。

从你的数据描述来看,听起来更像是一个普通的归一化问题。将重复值分离到一个查找表中,只存储不同的组合,加入反对查找表。这将通过模式设计保存数据,并将适用于所有数据库平台、所有版本、所有 SKU。

于 2010-02-19T20:14:10.043 回答
1

将 ApprovedBy 等 (varchar) 替换为对其他表的查找

你需要日期时间吗?

您预计会有超过 40 亿行吗?为什么第一个 3 cols bigint?

在这里和那里保存几个字节=很大的不同。更高的页面密度(例如每 8k 页更多的行)= 更少的空间 + 更小的索引。

当您有 15 亿行时进行压缩。

于 2010-02-19T20:21:26.753 回答