時間:2024-02-04 13:45作者:下載吧人氣:18
由于sqlserver的設計特殊性,一般大量數據一般都是采用水平分表,而垂直分表只是把text、圖片都較大數據放到單獨的表中,這樣數據設計會更合理,相對于mysql可能要好一點,mssql本來就是一個文件,基本上提升不大,目前來看幾十萬的數據沒有分不分表沒有任何影響,對于千萬以上數據還是采用水平分表比較好。
而 垂直分表 則相對很少見到和用到,因為這可能是數據庫設計上的問題了。如果數據庫中一張表有部分字段幾乎從不不更改但經常查詢,而部分字段的數據頻繁更改,這種設計放到同一個表中就不合理了,相互影響太大了。在已存在改情況的表的時候,可以考慮按列拆分表,即垂直拆分。
由于垂直分表的案例比較少,最近因為存在這樣的表,所以個人搗鼓了一下。
源表設計結構:
— 源表
CREATE TABLE [dbo].[DemoTab](
[Guid] [uniqueidentifier] NOT NULL,
[UserName] [nvarchar](30) NOT NULL,
[Password] [nvarchar](30) NOT NULL,
[UserAccount] [varchar](30) NOT NULL,
[Amount] [numeric](18, 4) NULL,
CONSTRAINT [PK_DemoTab] PRIMARY KEY CLUSTERED ([Guid])
)
GO
ALTER TABLE [dbo].[DemoTab]
ADD CONSTRAINT [DF_DemoTab_Guid] DEFAULT (newsequentialid()) FOR [Guid]
GO
— 原來是訪問視圖的(好處就是視圖層不變)
CREATE VIEW [dbo].[VDemoTab]
AS
SELECT [Guid],[UserName],[Password],[UserAccount],[Amount]
FROM [dbo].[DemoTab]
GO
網友評論