名站网址导航为大家提供关于数据库教程相关的教程网站知识。
SQLServer中网站数据库网站网站文件的存放相关方式,网站网站文件和网站网站文件组
在SQL SERVER中,网站数据库在硬盘上的存储相关方式和普通网站网站文件在Windows中的存储相关方式没有什么不同,仅仅是几个网站网站文件而已.SQL SERVER通过管理逻辑上的网站网站文件组的相关方式来管理网站网站文件.理解网站网站文件和,理解网站网站文件和网站网站文件组, 在SQL SERVER中,通过网站网站文件组这个逻辑对象对存放数据的网站网站文件进行管理., 先来看一张图:, , 还有一点要注意的是,假如如果一个表是存在物理上的多个网站网站文件中时,则表的数据页的组织为N(N为具体的几个网站网站文件)个B树.而不是一个对象为一个B树.,创建和使用网站网站文件组, 创建网站网站文件或是网站网站文件组可以通过在SSMS中或者使用T-SQL数据库语句进行。对于一个网站数据库来说,既可以在创建时增加网站网站文件和网站网站文件组,也可以向现有的网站数据库添加网站网站文件和网站网站文件组.这几种相关方式大同小异.下面来看一下通过, 首先创建网站网站文件组:, ,下面咱们就可以通过数据库语句将创建的表或者索引加入到新的网站网站文件组中了:,使用多个网站网站文件的优点与缺点, 通常情况下,小型的网站数据库并不需要创建多个网站网站文件来分布数据。但是随着数据的增长,使用单个网站网站文件的弊端就开始显现。, 首先:使用多个网站网站文件分布数据到多个硬盘中可以极大的提高IO性能., 其次:多个网站网站文件对于数据略多的网站数据库来说,备份和恢复都会轻松很多.我碰见过遇到一个150G的网站数据库,手头却没有这么大的存储设备…, 但是,在网站数据库的世界中,每一项好处往往伴随着一个坏处:, 显而易见,使用多网站网站文件需要占用更多的磁盘空间。这是因为每个网站网站文件中都有自己的一套B树组织相关方式,和自己的增长空间。当然了,还有一套自己的碎片-.-但是在大多数情况下,多占点磁盘空间带来的弊端要远远小,总结, 本文对SQL SERVER中网站网站文件和网站网站文件组的概念进行了简单阐述,并在文中讲述了网站网站文件和网站网站文件组的配置相关方式。按照业务组织好不同的网站网站文件组来分布不同的网站网站文件,使得性能的提升,对于您半夜少接几个电话的帮助是灰常大
复制具体相关代码 具体相关代码如下:
--根据MAX(MIN)ID
CREATE PROC [dbo].[proc_select_id]
@pageindex int=1,--当前页数
@pagesize int=10,--每页大小
@tablename VARChAR(50)='',--表名
@fields VARChAR(1000)='',--查询的字段集合
@keyid VARChAR(50)='',--主键
@condition NVARChAR(1000)='',--查询条件
@orderstr VARChAR(500),--排序条件
@totalRecord BIGINT OUTPUT--总记录数
AS
IF ISNULL(@orderstr,N'')=N'' SET @orderstr=N' ORDER BY ' @keyid N' DESC '
IF ISNULL(@fields,N'')=N'' SET @fields=N'*'
IF ISNULL(@condition,N'')=N'' SET @condition=N'1=1'
DECLARE @sql NVARChAR(4000)
--IF(@totalRecord IS NULL)
--BEGIN
SET @sql=N'SELECT @totalRecord=COUNT(*)'
N' FROM ' @tablename
N' WhERE ' @condition
EXEC sp_executesql @sql,N'@totalRecord INT OUTPUT',@totalRecord OUTPUT
--END
IF(@pageindex=1)
BEGIN
SET @sql=N'SELECT TOP ' STR(@pagesize) N' ' @fields N' FROM ' @tablename N' WhERE ' @condition N' ' @orderstr
EXEC(@sql)
END
ELSE
BEGIN
DECLARE @operatestr ChAR(3),@comparestr ChAR(1)
SET @operatestr='MAX'
SET @comparestr='>'
IF(@orderstr<>'')
BEGIN
IF(ChARINDEX('desc',LOWER(@orderstr))<>0)
BEGIN
SET @operatestr='MIN'
SET @comparestr='<'
END
END
SET @sql=N'SELECT top ' STR(@pagesize) N' ' @fields N' FROM ' @tablename N' WhERE ' @keyid @comparestr
N'(SELECT ' @operatestr N'(' @keyid N') FROM ' @tablename N' WhERE ' @keyid
N' IN (SELECT TOP ' STR((@pageindex-1)*@pagesize) N' ' @keyid N' FROM ' @tablename N' WhERE '
@condition N' ' @orderstr N')) AND ' @condition N' ' @orderstr
EXEC(@sql)
END
GO
--根据ROW_NUMBER() OVER
CREATE PROC [dbo].[proc_select_page_row]
@pageindex INT=1,--当前页数
@pagesize INT=10,--每页大小
@tablename VARChAR(50)='',--表名
@fields VARChAR(1000)='*',--查询的字段集合
@keyid VARChAR(50)='',--主键
@condition NVARChAR(1000)='',--查询条件
@orderstr VARChAR(500),--排序条件
@totalRecord BIGINT OUTPUT--总记录数
AS
IF ISNULL(@orderstr,N'')=N'' SET @orderstr=N' ORDER BY ' @keyid N' DESC '
IF ISNULL(@fields,N'')=N'' SET @fields=N'*'
IF ISNULL(@condition,N'')=N'' SET @condition=N'1=1'
DECLARE @sql NVARChAR(4000)
-- IF @totalRecord IS NULL
-- BEGIN
SET @sql=N'SELECT @totalRecord=COUNT(*)'
N' FROM ' @tablename
N' WhERE ' @condition
EXEC sp_executesql @sql,N'@totalRecord bigint OUTPUT',@totalRecord OUTPUT
--END
IF(@pageindex=1)
BEGIN
SET @sql=N'SELECT TOP ' STR(@pagesize) N' ' @fields N' FROM ' @tablename N' WhERE ' @condition N' ' @orderstr
EXEC(@sql)
END
ELSE
BEGIN
DECLARE @StartRecord INT
SET @StartRecord = (@pageindex-1)*@pagesize 1
SET @sql=N'SELECT * FROM (SELECT ROW_NUMBER() OVER (' @orderstr N') AS rowId,' @fields N' FROM ' @tablename N') AS T WhERE rowId>=' STR(@StartRecord) N' and rowId<=' STR(@StartRecord @pagesize - 1)
EXEC(@sql)
END
GO
--根据TOP ID
CREATE PROC [dbo].[proc_select_page_top]
@pageindex INT=1,--当前页数
@pagesize INT=10,--每页大小
@tablename VARChAR(50)='',--表名
@fields VARChAR(1000)='',--查询的字段集合
@keyid VARChAR(50)='',--主键
@condition NVARChAR(1000)='',--查询条件
@orderstr VARChAR(500),--排序条件
@totalRecord BIGINT OUTPUT--总记录数
AS
IF ISNULL(@orderstr,N'')=N'' SET @orderstr=N' ORDER BY ' @keyid N' DESC '
IF ISNULL(@fields,N'')=N'' SET @fields=N'*'
IF ISNULL(@condition,N'')=N'' SET @condition=N'1=1'
DECLARE @sql NVARChAR(4000)
--IF(@totalRecord IS NULL)
--BEGIN
SET @sql=N'SELECT @totalRecord=COUNT(*)'
N' FROM ' @tablename
N' WhERE ' @condition
EXEC sp_executesql @sql,N'@totalRecord INT OUTPUT',@totalRecord OUTPUT
--END
IF(@pageindex=1)
BEGIN
SET @sql=N'SELECT TOP ' STR(@pagesize) N' ' @fields N' FROM ' @tablename N' WhERE ' @condition N' ' @orderstr
EXEC(@sql)
END
ELSE
BEGIN
SET @sql=N'SELECT TOP ' STR(@pagesize) N' ' @fields N' FROM ' @tablename N' WhERE ' @keyid
N' NOT IN(SELECT TOP ' STR((@pageindex-1)*@pagesize) N' ' @keyid N' FROM '
@tablename N' WhERE ' @condition N' ' @orderstr N') AND ' @condition N' ' @orderstr
EXEC(@sql)
END
GO