【问题标题】:SQL Table handle large amounts of recordsSQL 表处理大量记录
【发布时间】:2013-07-20 04:36:59
【问题描述】:

我需要确保我的表可以处理超过 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];

【问题讨论】:

  • 取决于你的查询你需要什么索引。

标签: sql large-data records


【解决方案1】:

几乎任何数据库中的任何表结构都可以处理百万条记录。这不是现代计算机现代软件的大量记录。

你的结构看起来合理。一个问题是字段是否总是足以容纳数据中的值。它看起来像是使用SQL Server。 @ 987654321与varchar(8000) varchar(50),@ 987654322没有区别没有差异。 “50”似乎在我的低端。

另一个注释是您有一个DateModified列。我建议您还保留了修改的历史表。当它改变时,了解更改的是重要的,以及在更改之前的值。

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

最后,作为习惯的问题,我几乎总是在每个表的末尾包含以下字段:

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

这让我知道创建了谁以及谁。

【讨论】:

    猜你喜欢
    • 2010-09-14
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多