这两天遇到这样的一个问题。
最近在做所里面的标本系统编目的项目,已经作了一年多了,下面是物种名录的数据库设计。就是大家熟悉的界、门、纲、目、科、属、种的分类阶元,中间还包括亚阶元,也就是亚门,亚纲……一直到亚种。由于表太多,我没有贴全,暂且贴这点儿,大家肯定一看就明白了。
1.jpg
下面这个图指示的是标本的信息存放方式,也就是标本和物种的对应关系。
2.jpg
程序中涉及到这样一个应用,就是统计某一个阶元下面的标本数目,比如说我想统计脊索动物门(就是人种属于的那个啦)的标本数目,开始的时候,程序是随便写着玩的,就依次的计算门下面都有哪些纲,然后再计算都有哪些目...一直计算到种,然后查找这个种的集合中有多少个标本,最后得到所要的数值。现在这种做法是极度恶劣的。
后来设计了一组视图,将所有的物种信息都放在一张视图上。
视图1:显示所有的物种信息
3.jpg
视图2:显示所有的分类阶元信息(不包含亚阶元信息)
4.jpg
视图3:显示所有的亚分类阶元信息
5.jpg
视图4:显示所有的物种信息
6.jpg
这样设计的视图好像有些繁琐,但是在其他的应用上还可以用到其中的某些部分,于是就这样设计了。这样,在查找某一阶元下面的标本信息的时候只要利用select * from specimen where speciesID in (某一个阶元下面的物种列表),就可以实现了。
做好了之后发现运行良好,在为自己的小聪明沾沾自喜。忽然就发现问题了,数据量提高(物种数据一万条,标本数据一百万条)上去之后,运行时间特别慢。挠头ing.......
posted on 2005-03-11 11:59  Seraph  阅读(325)  评论(0编辑  收藏  举报