0

我需要确保我的一张表可以处理超过 1,000,000 条记录。

我可以对我的表代码有一些建议,以确定它是否确实可以处理这么多的记录。

这是我的代码:

USE [db_person_cdtest]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [Person](
    [PersonID] [numeric](18, 0) IDENTITY(1,1) NOT NULL,
    [ID] [varchar](20),
    [FirstName] [varchar](50) NOT NULL,
    [LastName] [varchar](50) NOT NULL,
    [AddressLine1] [varchar](50),
    [AddressLine2] [varchar](50),
    [AddressLine3] [varchar](50),
    [MobilePhone] [varchar](20),
    [HomePhone] [varchar](20),
    [Description] [varchar](10),
    [DateModified] [datetime],
    [PersonCategory] [varchar](30) NOT NULL,
    [Comment] [varchar](max),
 CONSTRAINT [PK_Person] PRIMARY KEY CLUSTERED 
(
    [PersonID] DESC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY];
4

1 回答 1

0

几乎任何数据库中的几乎任何表结构都可以处理一百万条记录。对于运行现代软件的现代计算机来说,这并不是大量的记录。

你的结构看起来很合理。一个问题是字段是否总是足够大以容纳数据中的值。看起来您正在使用 SQL Server。varchar(50)声明 a和 a在存储或性能上没有区别varchar(8000)。“50”对我来说似乎偏低。

另一个评论是你有一个DateModified专栏。我建议您还保留修改的历史记录表。了解发生了什么变化、何时发生变化以及变化前的值是什么通常很重要。

在更高级的系统中,您不会将一个人的地址和电话号码与其唯一 ID 存储在同一个表中。一个人可能有多个地址(送货地址、帐单地址、家庭住址等)。一个人可能有许多电话号码(固定电话号码、手机号码、工作号码、工作手机等)。而且,您没有电子邮件地址、Facebook id 等字段。联系信息比表格中的几个字段更复杂。

最后,按照习惯,我几乎总是在每个表格的末尾包含以下字段:

CreatedBy varchar(255) default system_user,
CreataedAt datetime not null default getdate()

这让我知道谁以及何时创建了一行。

于 2013-07-21T11:47:12.713 回答