请教如何实现数据库索引
平湖秋月 2001-04-24 03:35:00 我下面讲的问题,如果谁要我用数据库软件解决,就免谈了。因为存储系统是要我自己设计的。不能依靠其他的软件。
说起来需求也简单。
我有两个表,可以理解成两个文本文件。
表一:Account--客户表。表中有比如姓名、地址、银行帐号、行业等等几十个字段。
表二:Contact--联系人。表中记录客户中的联系人。与表一形成主从表关系,通过客户号字段关联表一。这个表也有数十个字段。
这两个表中有好多记录,每个记录都可以象使用C来读文件那样,直接通过所在位置读取。
我想在程序中实现一种通用的检索算法,就象SQL的WHERE字句那样。比如说,我想得到A客户的所有在广州的联系人名单,我就构造一个条件表达式:contact.acid=A and contact.addr=广州。我已经通过一个解释函数将这个表达式转化成两个结构体变量VarA,VarB:
VarA:
FieldName: contact.acid
OP: =
OPRAND: A
VarB:
FieldName: contact.addr
OP: =
OPRAND: 广州
现在问题来了,我如何在CONTACT表中快速查找出符合上述条件的记录?
根据传统算法,就象我们平时的遍历比较,先在ACCOUNT表中找到A客户的主关键字,然后遍历CONTACT表,比较每条记录是否满足上述两个变量的值。因为目前运行该软件的CPU运算速度非常慢,在记录多的情况下,速度会难以忍受。
我首先想到的是建立索引提高检索速度,但是如何建立,使用什么索引检索算法,而且,两个表几乎所有字段都可能被用于检索条件。我该如何建立索引才能合理提高性能。高手能否给我解答一下,我算法学得不好,也没有太多的时间去研究。我想直接地借鉴数据库的一些技术和模型,又不知道难度有多大。
说到底,我就是想做一个用户自定义检索条件的界面,用户选择了字段、比较运算符、值后,系统就能很快地得到结果。而且是基于某些字段的升降序排序的。
不知道利用数据库建立索引的方法是否可以解决?
哪位研究算法或DBMS开发的朋友能帮我?
谢谢。