加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

XML如何实现高效率查询?

(2007-01-23 16:58:01)
  几万名学生,几百门课,每个学生平均学习了几十门到一百多门课,有的课程成绩是百分制,有的课程成绩是五分制,有的课程对于某些学生是必修课对于有的学生是选修课。
  现在要以合理的方式保存学生的成绩数据,要能实现高效率地查找符合条件的学生。
  由于即使同专业同年级的学生,修的课程也不完全相同,尤其选修课。如果使用固定字段保存,则严重浪费空间(每门课程需要学生ID、必修课还是选修课、成绩等属性,固定字段需要多几乎十倍空间),用xml以可变字段保存数据是比较合适的。
  XML如何实现高效索引呢?
  首先,按学生ID索引,按每门课成绩索引(必修和选修分别计算)这都是基础的,要提升查询效率,仅做这样的索引是不够的。
  比如说,三门必修课不及格的要警告,必修课成绩全部在80分以上的有资格评三好学生,那么设定特别的触发值就可以提升查询效率(比如增加一些单值字段,条件被触发时该学生信息里增加该字段,例如三门不及格触发条件增加“三门不及格,警告”字段),还可以针对可能的查询条件对值进行简并,比如对百分进行关注度分段,这样可以大大减少索引空间的需要,还可以把触发增字段任务都排到机器空闲时间去做。
  另外,合理设计查询界面,防止资源消耗大的查询被提交也是提高查询效率的办法。比如说,象大猩猩这样的一贯喜欢调戏机器人的家伙,看到这个查询系统以后,肯定会尝试去找什么所有必修课都在90分以上这样大家都不关注所以系统未为此设置特别条件字段的学生,到时候他一个请求造成比别人一百人还多的系统开销,肯定要在输入上就禁止掉,不支持他的胡闹查询请求。为了友好地阻止这样的轰炸,可以给他们提供二次查询及多次查询,让他们在结果里查询,这样一方面降低他们调戏系统的兴趣,另一方面由于查询条件精确度提高,系统开销会减少很多。
  以后数据使用xml保存为可变字段的情况会越来越多,对于算法专家来说,又一春来了。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有