IT外包网管服务,解决所有MySQL分类排名问题

发布者:上海IT外包来源:http://www.lanmon.net点击数:1519

蓝盟IT外包
考虑MySQL的典型应用:必须给学生考试成绩表,实现学生按课程成绩顺序排名。 为了简单起见,只给出成绩表,不考虑可能相关联的学生信息表、课程信息表、教师信息表等,成绩表只制作3个重要的场所
cid  :课程id、int型、合计5个课程
sid  :学生id,int型,共计8872名学生
score  :成绩、int型、合计22366件成绩信息分布在10-100之间
实现这一需求的最直接想法是通过子查询统计每个分数。 在统计表中得分高多少是该得分的位次更高的得分计数1。 要区分课程排名,只需添加限制课程标识的约束条件。

通常,在低速子查询任务中,通过替换连接查询(join  )明显提高。


具体来说,请考虑将scores表自组合到课程排名的具体需求中。 在这种情况下,联接条件的课程相等,a表score的值小于b表score的值,因此可以通过合计满足联接条件的记录数来获得排名信息。
显然,应用自连接而不是子查询的方案不会显着提高查询的效率,即使添加了有效的索引也是如此。
此外,分析数据表的结果表明,实际上较慢的速率不是否定索引提高查询效率的能力,而是仅仅因为添加索引的字段的值较小:如果在cid字段中仅有5个值——的字段的值较少,则进行索引
例如,如果您改变需求,并按学生分类课程成绩排名(sid的值很大),则应用索引可以提高查询效率。
IT外包
>
400-635-8089
立即
咨询
电话咨询
服务热线
400-635-8089
微信咨询
微信咨询
微信咨询
公众号
公众号
公众号
返回顶部