SQLSERVER海量的查询优化及分页算法
来源:互联网 发布:福建弘扬妇幼软件 编辑:程序博客网 时间:2024/06/05 19:45
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
探讨如何在有着1000万条数据的MSSQLSERVER数据库中实现快速的数据提取和数据分页。以下代码说明了我们实例中数据库的“红头文件”一表的部分数据结构:
CREATETABLE[dbo].[TGongwen]( --TGongwen是红头文件表名
[Gid][int]IDENTITY(1,1)NOTNULL,
--本表的id号,也是主键
[title][varchar](80)COLLATEChinese_PRC_CI_ASNULL,
--红头文件的标题
[fariqi][datetime]NULL,
--发布日期
[neibuYonghu][varchar](70)COLLATEChinese_PRC_CI_ASNULL,
--发布用户
[reader][varchar](900)COLLATEChinese_PRC_CI_ASNULL,
--需要浏览的用户。每个用户中间用分隔符“,”分开
)ON[PRIMARY]TEXTIMAGE_ON[PRIMARY]
GO
下面,我们来往数据库中添加1000万条数据:
declare@iint
set@i=1
while@i<=250000
begin
insertintoTgongwen(fariqi,neibuyonghu,reader,title)values('2004-2-5','通信科','通信科,办公室,王局长,刘局长,张局长,admin,刑侦支队,特勤支队,交巡警支队,经侦支队,户政科,治安支队,外事科','这是最先的25万条记录')
set@i=@i+1
end
GO
declare@iint
set@i=1
while@i<=250000
begin
insertintoTgongwen(fariqi,neibuyonghu,reader,title)values('2004-9-16','办公室','办公室,通信科,王局长,刘局长,张局长,admin,刑侦支队,特勤支队,交巡警支队,经侦支队,户政科,外事科','这是中间的25万条记录')
set@i=@i+1
end
GO
declare@hint
set@h=1
while@h<=100
begin
declare@iint
set@i=2002
while@i<=2003
begin
declare@jint
set@j=0
while@j<50
begin
declare@kint
set@k=0
while@k<50
begin
insertintoTgongwen(fariqi,neibuyonghu,reader,title)values(cast(@iasvarchar(4))+'-8-153:'+cast(@jasvarchar(2))+':'+cast(@jasvarchar(2)),'通信科','办公室,通信科,王局长,刘局长,张局长,admin,刑侦支队,特勤支队,交巡警支队,经侦支队,户政科,外事科','这是最后的50万条记录')
set@k=@k+1
end
set@j=@j+1
end
set@i=@i+1
end
set@h=@h+1
end
GO
declare@iint
set@i=1
while@i<=9000000
begin
insertintoTgongwen(fariqi,neibuyonghu,reader,title)values('2004-5-5','通信科','通信科,办公室,王局长,刘局长,张局长,admin,刑侦支队,特勤支队,交巡警支队,经侦支队,户政科,治安支队,外事科','这是最后添加的900万条记录')
set@i=@i+1000000
end
GO
通过以上语句,我们创建了25万条由于2004年2月5日发布的记录,25万条由办公室于2004年9月6日发布的记录,2002年和2003年各100个2500条相同日期、不同分秒的记录(共50万条),还有由通信科于2004年5月5日发布的900万条记录,合计1000万条。
一、因情制宜,建立“适当”的索引
建立“适当”的索引是实现查询优化的首要前提。共12页 第1页
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
探讨如何在有着1000万条数据的MSSQLSERVER数据库中实现快速的数据提取和数据分页。以下代码说明了我们实例中数据库的“红头文件”一表的部分数据结构:
CREATETABLE[dbo].[TGongwen]( --TGongwen是红头文件表名
[Gid][int]IDENTITY(1,1)NOTNULL,
--本表的id号,也是主键
[title][varchar](80)COLLATEChinese_PRC_CI_ASNULL,
--红头文件的标题
[fariqi][datetime]NULL,
--发布日期
[neibuYonghu][varchar](70)COLLATEChinese_PRC_CI_ASNULL,
--发布用户
[reader][varchar](900)COLLATEChinese_PRC_CI_ASNULL,
--需要浏览的用户。每个用户中间用分隔符“,”分开
)ON[PRIMARY]TEXTIMAGE_ON[PRIMARY]
GO
下面,我们来往数据库中添加1000万条数据:
declare@iint
set@i=1
while@i<=250000
begin
insertintoTgongwen(fariqi,neibuyonghu,reader,title)values('2004-2-5','通信科','通信科,办公室,王局长,刘局长,张局长,admin,刑侦支队,特勤支队,交巡警支队,经侦支队,户政科,治安支队,外事科','这是最先的25万条记录')
set@i=@i+1
end
GO
declare@iint
set@i=1
while@i<=250000
begin
insertintoTgongwen(fariqi,neibuyonghu,reader,title)values('2004-9-16','办公室','办公室,通信科,王局长,刘局长,张局长,admin,刑侦支队,特勤支队,交巡警支队,经侦支队,户政科,外事科','这是中间的25万条记录')
set@i=@i+1
end
GO
declare@hint
set@h=1
while@h<=100
begin
declare@iint
set@i=2002
while@i<=2003
begin
declare@jint
set@j=0
while@j<50
begin
declare@kint
set@k=0
while@k<50
begin
insertintoTgongwen(fariqi,neibuyonghu,reader,title)values(cast(@iasvarchar(4))+'-8-153:'+cast(@jasvarchar(2))+':'+cast(@jasvarchar(2)),'通信科','办公室,通信科,王局长,刘局长,张局长,admin,刑侦支队,特勤支队,交巡警支队,经侦支队,户政科,外事科','这是最后的50万条记录')
set@k=@k+1
end
set@j=@j+1
end
set@i=@i+1
end
set@h=@h+1
end
GO
declare@iint
set@i=1
while@i<=9000000
begin
insertintoTgongwen(fariqi,neibuyonghu,reader,title)values('2004-5-5','通信科','通信科,办公室,王局长,刘局长,张局长,admin,刑侦支队,特勤支队,交巡警支队,经侦支队,户政科,治安支队,外事科','这是最后添加的900万条记录')
set@i=@i+1000000
end
GO
通过以上语句,我们创建了25万条由于2004年2月5日发布的记录,25万条由办公室于2004年9月6日发布的记录,2002年和2003年各100个2500条相同日期、不同分秒的记录(共50万条),还有由通信科于2004年5月5日发布的900万条记录,合计1000万条。
一、因情制宜,建立“适当”的索引
建立“适当”的索引是实现查询优化的首要前提。共12页 第1页
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- SQLSERVER海量数据库的查询优化及分页算法
- SQLSERVER海量数据库的查询优化及分页算法
- SQLSERVER海量数据库的查询优化及分页算法
- [收藏]SQLSERVER海量数据库的查询优化及分页算法
- SQLSERVER海量数据库的查询优化及分页算法
- SQLSERVER海量数据库的查询优化及分页算法方案
- SQLSERVER海量数据库的查询优化及分页算法
- SQLSERVER 海量数据库的查询优化及分页算法
- SQLServer海量数据库的查询优化及分页算法方案
- SQLSERVER海量的查询优化及分页算法
- SQLSERVER海量数据库的查询优化及分页算法
- SQLServer海量数据库的查询优化及分页算法方案
- SQLServer数据库海量数据查询优化及分页算法
- 海量数据库的查询优化及分页算法方案
- 海量数据库的查询优化及分页算法方案
- 海量数据库的查询优化及分页算法方案
- 海量数据库的查询优化及分页算法方案
- 海量数据库的查询优化及分页算法方案
- java中treeset 重写排序 怎么看不明白???
- Office 2007 删除页眉横线方法
- 基础
- :创建索引视图
- Flickr Stats 功能的设计经验
- SQLSERVER海量的查询优化及分页算法
- 分页存储过程,综合了NOT_IN和SET ROWCOUNT
- JS可以读取COOKIES
- DT问与答
- 关于ODBC数据源连接文本
- 区间算术及原型代码(C++)
- 联机丛书:删除存储过程
- 联机丛书:查看存储过程
- The Bridge Pattern C++实现