SQL Server中表格水平拆分的问题

SQL Server中表格水平拆分的问题,第1张

用游标应该能轻松搞定

DECLARE @ClassID VARCHAR(32)

DECLARE @NewTable VARCHAR(32) 

DECLARE CURSOR_TMP CURSOR FAST_FORWARD FORWARD_ONLY LOCAL READ_ONLY

FOR

SELECT 班级 FROM 学生信息表 GROUP BY 班级

OPEN CURSOR_TMP

FETCH NEXT FROM CURSOR_TMP INTO @ClassID

WHILE @@FETCH_STATUS=0

BEGIN

  SET @NewTable='New_Class_'+@ClassID--新的表名称

  --EXEC('DROP TABLE '+@NewTable+'') 

  EXEC('SELECT * INTO '+@NewTable+' FROM 学生信息表 WHERE (班级='+@ClassID+')')

  --设置主键,约束等 

  

  FETCH NEXT FROM CURSOR_TMP INTO @ClassID

END

CLOSE CURSOR_TMP

DEALLOCATE CURSOR_TMP

GO

--确定数据正确后再处理源表数据

一、优化表的数据类型

select * from tablename procedure analyse()

select * from tablename procedure analyse(16.265)

上面输出一列信息,牟你数据表的字段提出优化建义,

二、通过拆分表提高数据访问效率

拆分一是指针对表进行拆分,如果是针对myisam类型的表进行处理的话,可以有两种拆分方法

1、是垂直拆分,把主要的与一些散放到一个表,然后把主要的和另外的列放在另一张表。

2、水平拆分方法,根据一列或多列的值把数据行放到两个独立的表中,水平拆分通常几种情况。

表很大,拆分后可降低查询时数据和索引的查询速度,同时也降低了索引的层数,提高查询的速度。

表中的数据本来就有独立性,表中分别记录各个地区的数据或不同时期的数据,特别是有些数据常用,厕国一些数据不常用的情况下,

需要把数据存放到多个不同的介质上。

三、逆规范化

四、使用中间表优化方法对于数据库教程大的表,在进行统计查询时通常会比较慢的,并且还要考虑查询是否会对在线应用产生影响,通常这种情况下我们使用中间表可以提高查询统计速度


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10705398.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存