天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

千萬數(shù)據(jù)的連續(xù)ID表,快速讀取其中指定的某1000條數(shù)據(jù)?

  有這樣一個需求:一張上千萬數(shù)據(jù)的表,結(jié)構(gòu)很簡單:ID是自增的,你怎么快速讀取其中指定的某1000條數(shù)據(jù),比如100萬到100萬零1000?這個需求其實很簡單,因為是自增型ID,可能分兩種狀況:有聚集索引或Heap,如果是后者,我想用ID和新增時間組建非聚集索引。效果應(yīng)該相差不大。于是動手,過程如下:

  一、準(zhǔn)備測試數(shù)據(jù)

  基本測試環(huán)境:
邀月工作室

  插入1000萬測試數(shù)據(jù):


/***************創(chuàng)建千萬級測試數(shù)據(jù)庫***********
****************downmoon 3w@live.cn **************
*/

Create database HugeData_10Millons
go
use HugeData_10Millons
go

/***************創(chuàng)建測試表*********************
****************downmoo 3w@live.cn **************
*/

IF NOT OBJECT_ID('[bigTable]') IS NULL
DROP TABLE [bigTable]
GO
Create table bigTable
(PID
int identity(1,1) primary key not null
,PName
nvarchar(100) null
,AddTime
dateTime null
,PGuid
Nvarchar(40)
)
go

truncate table [bigTable]

/***************創(chuàng)建第一個25萬測試數(shù)據(jù)*********************
****************downmoo 3w@live.cn **************
*/

declare @d datetime
set @d=getdate()

declare @i int
set @i=1
while @i<=250000
begin
insert into [bigTable]
select cast(datepart(ms,getdate()) as nvarchar(3))+Replicate('A',datepart(ss,getdate()))
,
getdate()
,
NewID()
set @i=@i+1
end

select [語句執(zhí)行花費時間(毫秒)]=datediff(ms,@d,getdate())

/*
語句執(zhí)行花費時間(毫秒)
94750
*/

/***************創(chuàng)建第二個25萬測試數(shù)據(jù)*********************
****************downmoo 3w@live.cn **************
*/

declare @d datetime
set @d=getdate()

declare @i int
set @i=1
while @i<=250000
begin
insert into [bigTable]
select cast(datepart(ms,getdate()) as nvarchar(3))+Replicate(Substring(cast(NEWID() as nvarchar(40)),1,6),3)
,
getdate()
,
NewID()
set @i=@i+1
end

select [語句執(zhí)行花費時間(毫秒)]=datediff(ms,@d,getdate())

/*
語句執(zhí)行花費時間(毫秒)
115640
*/

/***************創(chuàng)建900萬測試數(shù)據(jù)*********************
****************downmoo 3w@live.cn **************
*/

declare @d datetime
set @d=getdate()

declare @i int
set @i=1
while @i<=9000000
begin
insert into [bigTable]
select replicate('X',ROUND((RAND()* 60),0) )+cast(datepart(ms,getdate()) as nvarchar(3))
,
getdate()
,
NewID()
set @i=@i+1
end

select [語句執(zhí)行花費時間(毫秒)]=datediff(ms,@d,getdate())
/*
語句執(zhí)行花費時間(毫秒)
3813686
*/

/***************創(chuàng)建最后50萬測試數(shù)據(jù)*********************
****************downmoo 3w@live.cn **************
*/

declare @d datetime
set @d=getdate()

declare @i int
set @i=1
while @i<=500000
begin
insert into [bigTable]
select replicate('X',ROUND((RAND()* 60),0) )+cast(NewID() as nvarchar(40))
,
getdate()
,
NewID()
set @i=@i+1
end

select [語句執(zhí)行花費時間(毫秒)]=datediff(ms,@d,getdate())
/*
語句執(zhí)行花費時間(毫秒)
207436
*/

/*
檢查數(shù)量
select count(1) from dbo.bigTable
----------10000000
清除日志
DUMP TRANSACTION HugeData_10Millons WITH NO_LOG
BACKUP LOG HugeData_10Millons WITH NO_LOG
DBCC SHRINKDATABASE(HugeData_10Millons)

*/


  三、修改聚集索引,以檢查查詢速度

 

/*刪除系統(tǒng)自動創(chuàng)建的聚集索引
*/
ALTER TABLE [dbo].[bigTable] DROP CONSTRAINT [PK__bigTable__7C8480AE]
go


/*創(chuàng)建一個非聚集索引
在PID和addtime字段
*/
CREATE NONCLUSTERED INDEX bigTable_NoClusIdx
ON [bigTable]([AddTime] ASC,[PID] ASC);
go
DROP Index [bigTable_NoClusIdx] on dbo.[bigTable]


/*創(chuàng)建一個非聚集索引
在PID字段
*/

Create NONCLUSTERED INDEX bigTable_NoclusIdx
ON [bigTable](PID);
go

DROP Index [bigTable_NoClusIdx] on dbo.[bigTable]

/*創(chuàng)建一個非聚集索引
在AddTime字段
*/
CREATE NONCLUSTERED INDEX bigTable_NoclusIdx
ON [bigTable](AddTime);
go

DROP Index [bigTable_NoClusIdx] on dbo.[bigTable]

/*創(chuàng)建一個非聚集索引
在GUID字段
*/

CREATE NONCLUSTERED INDEX bigTable_NoclusIdx
ON [bigTable](PGuid);
go

DROP Index [bigTable_NoClusIdx] on dbo.[bigTable]


/*創(chuàng)建一個聚集索引
在GUID字段
*/

CREATE CLUSTERED INDEX bigTable_ClusIdx
ON [bigTable](PGuid);
go

DROP Index [bigTable_ClusIdx] on dbo.[bigTable]

/*創(chuàng)建一個聚集索引
在addTime字段
*/
CREATE CLUSTERED INDEX bigTable_ClusIdx
ON [bigTable](AddTime);
go

DROP Index [bigTable_ClusIdx] on dbo.[bigTable]


/*創(chuàng)建一個聚集索引
在PID字段
*/
CREATE CLUSTERED INDEX bigTable_ClusIdx
ON [bigTable](PID);
go

it知識庫千萬數(shù)據(jù)的連續(xù)ID表,快速讀取其中指定的某1000條數(shù)據(jù)?,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 97se se| 免费视频国产 | 国产精品一国产精品免费 | 国产人妻人伦精品9 | 美女搜查官被高难度黑人在线播放 | 给我免费播放片bd国语 | 在线自拍综合亚洲欧美 | 国产免费网站看v片在线 | 国产欧美日韩网站 | 免费精品美女久久久久久久久 | 我半夜摸妺妺的奶C了她 | 国产亚洲精品久久久久久禁果TV | 美女内射少妇三区五区 | 亚洲色视在线观看视频 | 双性大乳浪受噗呲噗呲h总 双性被疯狂灌满精NP | 免费亚洲视频在线观看 | 日本亚洲精品无码区国产电影 | 久久夜色噜噜噜亚洲AV0000 | yellow在线中文 | 亚洲精品在线观看视频 | 大香网伊人久久综合网2020 | 亚洲国产成人爱AV在线播放丿 | 国产成年网站v片在线观看 国产成年人在线观看 | 亚州性夜夜射在线观看 | 麻豆国产精品久久人妻 | 色青青草原桃花久久综合 | 22eee在线播放成人免费视频 | 国产亚洲tv在线观看 | 伊人久久中文字幕久久cm | 牛牛在线精品视频(正) | 24小时日本免费看 | 沦为公交两奶头春药高潮迭起 | 国产精品高清视亚洲一区二区 | 香蕉久久一区二区三区啪啪 | 性一交一乱一色一视频 | 久久4k岛国高清一区二区 | 啦啦啦WWW在线观看免费高清版 | 国产亚洲视频在线观看 | 国产曰韩无码亚洲视频 | 九九影院午夜理论片无码 | 免费看男人J放进女人J无遮掩 |