请教如何实现数据库索引

平湖秋月 北京高维信诚资讯有限公司 CTO  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开发的朋友能帮我?
谢谢。
...全文
69 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
one_add_one 2001-07-30
给你举个实例:
~~~~~~~~~~~~~~~~~~~~~~
姓名 年龄 地址 行业
~~~~~~~~~~~~~~~~~~~~~~
狗 15 3区 杀猫 ...1
猪 13 1区 杀狗 ...2
猫 18 4区 杀鸭 ...3
鸡 23 7区 杀狗 ...4
鸭 25 5区 杀鸡 ...5
~~~~~~~~~~~~~~~~~~~~~~
按照 姓名 年龄 地址 行业 分别排序!
保存排序结果(用指针)!

查找时用二分查找!效率很高!
回复
hp1200 2001-07-29
up
回复
hp1200 2001-07-29
up
回复
发帖
数据结构与算法
创建于2007-08-27

3.2w+

社区成员

数据结构与算法相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2001-04-24 03:35
社区公告
暂无公告