2013-07-21 89 views
0

我需要確保我的表可以處理超過1,000,000條記錄。SQL表處理大量記錄

我可以對我的表代碼有一些建議,以確定它是否確實可以處理這一數量的記錄。

這裏是我的代碼:

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]; 
+0

取決於你的查詢你需要什麼索引。 –

回答

0

幾乎在幾乎任何數據庫可以處理一百萬條記錄的任何表結構。對於運行現代軟件的現代計算機來說,這並不是大量的記錄。

您的結構看起來很合理。一個問題是這些字段是否總是足夠大以保存數據中的值。它看起來像你正在使用SQL Server。宣佈varchar(50)varchar(8000)的存儲或性能沒有差異。 「50」對我來說似乎偏低。

另一種意見是,你有一個DateModified列。我建議你也保留修改的歷史表。瞭解變化之後發生了什麼變化,什麼時候變化以及變化之前的值是很重要的。

在更高級的系統中,您不會將個人的地址和電話號碼存儲在與其唯一ID相同的表中。一個人可以有多個地址(送貨地址,賬單地址,家庭住址等)。一個人可能有很多電話號碼(固定電話號碼,手機號碼,工作號碼,工作移動電話等)。而且,您沒有電子郵件地址,Facebook ID等字段。聯繫信息比表中的幾個字段更復雜。

最後,由於習慣問題,我幾乎總是包括在每一個表的末尾以下字段:

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

這讓是我知道行創建誰當。