- 註冊時間
- 2006-3-13
- 最後登錄
- 2025-1-10
- 在線時間
- 673 小時
- 閱讀權限
- 200
- 積分
- 417
- 帖子
- 1107
- 精華
- 0
- UID
- 2
  
|
經常做資料庫效能測試時,需要用到資料量很大的資料表,自己動手寫一段 TSQL 語法即可。
TSQL_建立資料表結構:
- /**//****** 對象: 表 [dbo].[LargeTable] 腳本日期: 2006-10-26 15:40:27 ******/
- if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[LargeTable]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
- drop table [dbo].[LargeTable]
- GO
- /**//****** 對象: 表 [dbo].[LargeTable] 腳本日期: 2006-10-26 15:40:27 ******/
- CREATE TABLE [dbo].[LargeTable] (
- [ID] [int] IDENTITY (1, 1) NOT NULL ,
- [Title] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
- [Content] [ntext] COLLATE Chinese_PRC_CI_AS NULL ,
- [PublicTime] [datetime] NULL ,
- [Author] [nvarchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
- [IsTop] [tinyint] NULL
- ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
- GO
- ALTER TABLE [dbo].[LargeTable] WITH NOCHECK ADD CONSTRAINT [PK_LargeTable] PRIMARY KEY CLUSTERED ([ID]) ON [PRIMARY]
- GO
- ALTER TABLE [dbo].[LargeTable] ADD CONSTRAINT [DF_LargeTable_IsTop] DEFAULT (0) FOR [IsTop]
- GO
- exec sp_addextendedproperty N'MS_Description', N'作者', N'user', N'dbo', N'table', N'LargeTable', N'column', N'Author'
- GO
- exec sp_addextendedproperty N'MS_Description', N'内容', N'user', N'dbo', N'table', N'LargeTable', N'column', N'Content'
- GO
- exec sp_addextendedproperty N'MS_Description', N'文章表,包含100萬筆紀錄', N'user', N'dbo', N'table', N'LargeTable', N'column', N'ID'
- GO
- exec sp_addextendedproperty N'MS_Description', N'是否置頂 0.不置頂 1.置頂', N'user', N'dbo', N'table', N'LargeTable', N'column', N'IsTop'
- GO
- exec sp_addextendedproperty N'MS_Description', N'發佈時間', N'user', N'dbo', N'table', N'LargeTable', N'column', N'PublicTime'
- GO
- exec sp_addextendedproperty N'MS_Description', N'文章標題', N'user', N'dbo', N'table', N'LargeTable', N'column', N'Title'
- GO
複製代碼
TSQL_產生資料:
- /**//*truncate table largetable*/
- declare @title nvarchar(100)
- declare @content nvarchar(100)
- declare @publictime datetime
- declare @author nvarchar(10)
- declare @istop tinyint
- declare @randtime_month tinyint
- declare @randtime_day tinyint
- declare @randtime_hour tinyint
- declare @randtime_minute tinyint
- declare @randtime_second tinyint
- declare @str varchar(30)
- print '開始執行時間:' + cast(getdate() as varchar)
- declare @i int, @count int
- set @i = 1
- set @count = 500000
- while @i <= @count
- begin
- set @randtime_month = rand(@i) * 12
- set @randtime_day = rand(@i) * 28
- set @randtime_hour = rand(@i) * 24
- set @randtime_minute = rand(@i) * 60
- set @randtime_second = rand(@i) * 60
- set @str = '2006-' + cast(@randtime_month as varchar) + '-' + cast(@randtime_day as varchar) + ' ' + cast(@randtime_hour as varchar) + ':' + cast(@randtime_minute as varchar) + ':' + cast(@randtime_second as varchar)
- set @title = '文章標題' + cast(@i as varchar)
- set @content = '文章内容' + cast(@i as varchar)
- set @publictime = convert(datetime, @str, 120)
- set @author = '作者' + cast(@i as varchar)
- if @i % 10000 = 0
- set @istop = 1
- else
- set @istop = 0
- insert into largetable values(@title, @content, @publictime, @author, @istop)
- set @i=@i+1
- end
- print '執行完畢時間:' + cast(getdate() as varchar)
複製代碼 |
|