用游标应该能轻松搞定
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、水平拆分方法,根据一列或多列的值把数据行放到两个独立的表中,水平拆分通常几种情况。
表很大,拆分后可降低查询时数据和索引的查询速度,同时也降低了索引的层数,提高查询的速度。
表中的数据本来就有独立性,表中分别记录各个地区的数据或不同时期的数据,特别是有些数据常用,厕国一些数据不常用的情况下,
需要把数据存放到多个不同的介质上。
三、逆规范化
四、使用中间表优化方法对于数据库教程大的表,在进行统计查询时通常会比较慢的,并且还要考虑查询是否会对在线应用产生影响,通常这种情况下我们使用中间表可以提高查询统计速度
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)