好贷网好贷款

数据库疑难问题 50wangheng1700]

发布时间:2016-12-5 20:35:48 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"数据库疑难问题 50wangheng1700]",主要涉及到数据库疑难问题 50wangheng1700]方面的内容,对于数据库疑难问题 50wangheng1700]感兴趣的同学可以参考一下。

小弟有如下一段代码: CREATE VIEW 奖学金评定(学号,姓名,性别,思想素质总分,专业素质总分,文化素质总分,身心素质总分,最后得分,等级) AS SELECT TOP 60  学生.学号,学生.姓名,学生.性别, 思想素质测评.最后得分,专业素质测评.最后得分,文化素质测评.最后得分,身心素质测评.最后得分, 思想素质测评.最后得分+专业素质测评.最后得分+文化素质测评.最后得分+身心素质测评.最后得分, CASE  WHEN 成绩总览.大型数据库设计<60 OR 成绩总览.数据库原理<60 OR 成绩总览.大学英语<60 OR 成绩总览.线性代数<60 OR 成绩总览.数字逻辑<60 OR 成绩总览.毛概<60 THEN '挂科' ELSE '' END FROM 学生,成绩,思想素质测评,专业素质测评,文化素质测评,身心素质测评,成绩总览 WHERE 思想素质测评.学号=学生.学号 AND  专业素质测评.学号=学生.学号 AND         文化素质测评.学号=学生.学号 AND  身心素质测评.学号=学生.学号 AND       成绩总览.学号=学生.学号 GROUP BY 学生.学号,学生.姓名,学生.性别,思想素质测评.最后得分,专业素质测评.最后得分,文化素质测评.最后得分,身心素质测评.最后得分,          成绩总览.大型数据库设计,成绩总览.数据库原理,成绩总览.大学英语,成绩总览.线性代数,成绩总览.数字逻辑,成绩总览.毛概 ORDER BY (思想素质测评.最后得分+专业素质测评.最后得分+文化素质测评.最后得分+身心素质测评.最后得分) GO 但是查询起来非常得慢,要十几秒左右,有什么方法能够简化这个查询过程,或者查询速度的方法吗 另外如何在 “等级” 的列属性里面 按照最后总分(不包括挂科学生)的排名 人数的%5,%10,%30分别添加一等,二等,三等这些信息呢 望指教

http://www.chinaunix.net/jh/20/83481.html

1、觉得你这个貌似不用group by吧 2、在相应列上建立索引, 3、试试在视图里面不要使用top,在查询的时候再top 4、加等级的再看看。

同意HEROWANG说法 楼主最好拿点数据来及想要的结果, 让大家看看是否有更加简单的方法 

要判断等级的话 case 1.0*(select count(*) from tb where 总成绩>t.总成绩)/(select count(*) from tb where 总成绩>60)      when 0.05 then '一等'      when 0.10 then '二等'         when 0.3 then '三等' end 试试

太多了...上厕所去

1.在WHERE条件后面用到的字段上合理建立索引 2.例如CASE 后面的语句可以考虑违背范式思想,在表中插入数据的同时就把"挂科"等信息插入到表中,利用空间换取查询时间,在做数据仓库的时候经常采取这一方案,尤其是在CASE中使用OR语句,性能非常低下 3.GROUP BY子句在你的查询用没起到什么作用 4.你可以考虑把视图换成存储过程,同样能实现你要的效果,并且是预编译好的,性能方面要好些 5.视数据量大小而定,如果数据量大的话,需要对表进行分区 以上因素可以做为参考

study...

学习了~~~

一看到表名或者字段名是中文的,头就发晕

上一篇:oracle谁有啊 20jinger18]
下一篇:数据库插入数据的问题 20wangheng1700]

相关文章

相关评论