社区
疑难问题
帖子详情
千万行级表关联查询 请问如何优化
xeppp
2011-05-24 08:36:28
大家好
我们在做一考试系统报表。学生表人数1000万 教师表人数1000万 成绩表2000万 选课表1000万
现在要根据学生名称 或是 老师名称 或是 学生性别 或是 课程名称 做条件做统计
eg:查询某个老师所教的课程下所有学生成绩(总成绩 或是 平均成绩)
现在过程写出来了 但是查询速度 在 30-50 秒间
请有搞过海量数据的大侠 帮帮忙 小弟先谢了
...全文
180
12
打赏
收藏
千万行级表关联查询 请问如何优化
大家好 我们在做一考试系统报表。学生表人数1000万 教师表人数1000万 成绩表2000万 选课表1000万 现在要根据学生名称 或是 老师名称 或是 学生性别 或是 课程名称 做条件做统计 eg:查询某个老师所教的课程下所有学生成绩(总成绩 或是 平均成绩) 现在过程写出来了 但是查询速度 在 30-50 秒间 请有搞过海量数据的大侠 帮帮忙 小弟先谢了
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
nevergu
2011-05-25
打赏
举报
回复
[Quote=引用 11 楼 sql_xep 的回复:]
如果不常更改 只是查询 可以试试分区表 如果男女 是可选项 就听楼上的 分区视图
[/Quote]
+1
sql_xeppp
2011-05-25
打赏
举报
回复
如果不常更改 只是查询 可以试试分区表 如果男女 是可选项 就听楼上的 分区视图
打一壶酱油
2011-05-24
打赏
举报
回复
[Quote=引用 8 楼 xeppp 的回复:]
重点说说 像它只选 男 或 女 进行查询 这个最费时 50多秒
[/Quote]
这个查询当然慢,你看看查询计划,是全表扫描。如果这些表不常修改,只是常用于查询,可以考虑建立
索引视图,速度理论上会快很多
haa17
2011-05-24
打赏
举报
回复
语句怎么写的?
xeppp
2011-05-24
打赏
举报
回复
重点说说 像它只选 男 或 女 进行查询 这个最费时 50多秒
快溜
2011-05-24
打赏
举报
回复
采用临时表。
xeppp
2011-05-24
打赏
举报
回复
索引都建了 是where里用到的 除了性别 其它的都建了
xeppp
2011-05-24
打赏
举报
回复
归档 ? 我们用的sqlserver
xeppp
2011-05-24
打赏
举报
回复
学生表
学生ID 学生名称 学生性别 学生年龄 等等
成绩表
成绩ID 学生ID 科目ID
课程表
课程ID 课程名称 教师ID
教师表
老师ID 老师名称
jhone99
2011-05-24
打赏
举报
回复
适当建立索引会提高查询速度
jwdream2008
2011-05-24
打赏
举报
回复
数据能归档了尽量先归档吧!
快溜
2011-05-24
打赏
举报
回复
表结构呢?
mysql关联子查询的一种
优化
方法分析
本文实例讲述了mysql关联子查询的一种
优化
方法。分享给大家供大家参考,具体如下: 很多时候,在mysql上实现的子查询的性能较差,这听起来实在有点难过。特别有时候,用到IN()子查询语句时,对于上了某种数量级的表来说,耗时多的难以估计。本人mysql知识所涉不深,只能慢慢摸透个中玄机了。 假设有这样的一个exists查询语句: select * from table1 where exists (select * from table2 where id>=30000 and table1.uuid=table2.uuid); table1为十万行级的表,table2为百万行级的表,
面试题MySQL篇.pdf
面试题MySQL篇
MYSQL读书笔记整理
mysql的InnoDB学习 mysql的语法
优化
mysql的其他
mysql 存储引擎1
两种常用的存储引擎: InnoDB 和 MYISAM查看命令:
MySQL小面试题!!!!!
## 数据库查询效率很低怎么办 读提交怎么解决幻读问题 WHERE a > 1 and b=1 ORDER BY c 建立索引 如何建立联合索引 比较效率COUNT(1)、COUNT(*)、COUNT(主键)、COUNT(字段) B+树可以并发修改吗 B+树是可以并发修改的。 B+树是MySQL默认的存储引擎InnoDB的索引数据结构,并发修改需要考虑到锁的结构来保证并发修改的正确性和一致性,还需要考虑到锁的粒度来控制开销。 锁的结构有表级锁和行级锁,行级锁的粒度较小,可以避免不必要的开销,比如只需要锁住需要修改的**数据行**,而其他数据行可以被其他事务 聚簇索引和非聚簇区别 聚簇索引又叫主键索引,叶子节点中存储主键和数据,非聚簇索引中存储索引和主键。聚簇索引中主键索引和数据在一起,都在叶子节点中,非聚簇索引中,索引和数据是分开的。 建立在主键上的是主键索引。我们自己建的索引基本上都是非聚簇索引。 在非聚簇索引中查询数据,还需要根据主键到聚簇索引中查询,这个过程叫做回表。第一次索引查询是顺序IO,回表是随机IO,消耗性能,回表次数越多,
优化
器越倾向于全表扫描。
疑难问题
22,300
社区成员
121,734
社区内容
发帖
与我相关
我的任务
疑难问题
MS-SQL Server 疑难问题
复制链接
扫一扫
分享
社区描述
MS-SQL Server 疑难问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章