提高数据库操作速度的程序设计.pdf
1 9 9 3 年第 1 期 彤庠 杯 遂 煤矿机械 3 . , 1 前言 提高数据库操作速度的程序设计 哈尔 滨煤 矿机械 研究 所 兰 墨 兰 堕墨 DBAS EⅢ是微型 机上广 为使 用的一种 数据库管理 系统,它不仅具 有很 强的 数据 处 理能 力,并 且能方便地对数据库 进行逻辑运 算 、数 据统 计 、分类求 和及检索 等操 作。如 何提 高数 据库 的操 作速度,笔者 通过工作 实 践,探 索出 以下几 种程 序设 计方 法。 2 提高逻辑运算速 度的方法 在DBAS EⅢ的数据库 中, 完成主题词 的 “ 与 . 或”、 “ 非 逻辑运算的具休 方法 ,通常是 将两个 参加逻辑运算 的检 索词 的记 录号 装入 一运算库 中,再对该库进行排 序 或索引, 然后删 除不满 足条 件 的记 录。这样做从 响应 时间上看 不太理 想,而且 每增 加一个 运算符 或运算库 中记 录数是 l O 的 指数倍,时间都要成倍地增长。如何提高这 类 运 算的 速度 昵 用 DBAS E r提供 的 S E T RE L AT I ON 命令可以改善这种情况。 该命 令格式如下 S ET RELAT1 0N [T0 中的记录指针按照索引 1 夸f { . i 文件给出的逻辑顺序而移动,把指针定位枉 关键字段值相等的第一个记录上。 现举例说明甩 S E T R EL AT I ON命令 如何实现逻辑 或 的运算程序t [LLLl ,PRG ] SELE B U SE DL2 ALI AS COS T I NDEX ON XH TO Y S I NX S ELE A U SE DLI S ET RELATI ON TO XH I NTO COST REPLA CE XH W I TH 0 FOR XH COS T - XH 用这种方 法可 以提 高逻 辑运算速度。 3 加快数据 统计的方法 应用DB AS EⅢ关系数 据库进 行数据统 计用C O UNT、S U M计数和求和命令时,通 常是打开数据库后,寻找数据指针从数据库 中的第一条记录开始一直寻找到最后一条记 录,对符合条件的记录进行计数并求和。当 计算完符合一种条件的数据后,再进行另一 个条件数据计算时,寻找数据指针又要从头 开始一直寻找到最后一条记录 包括寻找上 一 提 已经统计 了的 数据 , 检验它们是否满 足 条件,从而使统计时间显得太长。 利用记录 删腺命令 DEEETE [][ F O R / WHI L E 条件 ]可 以解 决这一问题,首先将数据库中所有不符台统 维普资讯 “ 煤矿机械 计条件的记录进行删除,即在数据库记录中 做上删除标 记 },然后再统 计符台 条件 的记录。在设置 有S ET DEL ETEDON命 令的程序 中, COUNT、 S UM 命令就忽略 了所有标有 删除记号 { I } 的记录 , 从而 使数据库中的 记录数量相 对减少, 达 到缩 短统 计时 间的 目的 在统 计 结束 时, 利用 RECAI L AL1 命令将 昕有被标有 删除 记 号 的记录恢 复正常,为了避免程序在 统计过程 中非正常 中断 ,在程 序中可 将S ET ES CAPE设置 在OFF状态, 使键盘 ES C 键无效 ,从而 保护 了数据灼完 整 程序 例子 如下 SET ESCAPE C l FF SET EDLETED ON S ET TALK OFF 对不 参加统 汁的记录进行 删除 DO W HI L. T. HM 1 “ CLEAR 1 3 ,2 5 S AY “ 输入 非统 计记 录代 码 ”GET HM1 l 4 ,2 5 S A Y “ 输 空格开 始 汁算 READ I F H M 1 “” EXI T ENDI F DELETE A LL FOR DW “ HM l ENDDO ● 对 参加统计 的 记录进 行统 计 DO W Ht L. T. CLEAR HM 2 “ l 3 ,2 5 S AY “ 输入统计记录代耐” GET HM 2 l 4 ,2 5 S AV “ 输 入O 退 出本 系统” READ I F HM2 ‘ ‘ O ” 1 9 9 3 年第 l 期 RFCALL ALL RETURN ENDI F COU NT.TO COUNTER FOR DM “& HM 2 ” 。 SUM J I I ZTZ BN J 1 I TZ T0 BL1 , BL2 SUBS TR DM , 1 , 2 “&H M£ , CLEAR 1 . j ,2 5 S AY “计划总投资”GE T BL1 1 5 ,2 5 SAY “ 本年计划投 资”GET BL2 l 6 , 2 5 SAY “” W AI T ENDD0 4提高分类 求和处理速 度的方法 在利用 d BAS EⅢ进行辅 助管理 时, 经 常会遇到对数据库 数据进行 分类 求和 处理 的 问题。有些分类求和处理利用建立 分类 求和 文件命令 TOTAL 并不能实现, 如果 用 几个 “ S uM表达式清单TO 内存变量清单调 F OR条件I ” 语 句, 在原数据 中进行计算 , 由于记 录较 多,运算 速度 很慢。 对于这种情况 , 利用 “ COP Y TO 文件 名FOR 条件1 ” 语句,将满足条件1 的记录拷 贝刘一个 中问过 渡数据库中,然后在另一十 工作 区打开此过 渡数据 库,再利用几个 S UM 语 句进 行 分类求 和, 可提 高 数据处 理的速 度。实践验证,速度可提高 5倍 以上。 5快速 排序 、检索的方法 排序、检索是数据主要的管理手段 。实 现的方法 是用户只需键入 与 “ 检索 对应的 数字功能选择,不必指定检索方式,计算机 能根据 用户输入的条件 自动判断究竟是哪一 个记录’检索 f 果可 以直接按 先后 次序在监 视器上连续盈示或 在打 印机上输出符 合检索 条件的记录。 快速排序 、 检索模挟的程序如下 维普资讯 1 9 9 3 年第 1 期 煤矿机械 1 5 ‘ LLF,PRG V t 速 排序 S ET TALK OFF TT “ US E 数据库名 DO W HI LE. T. CLEAR “ Z 一 8快 速排序、检索 检索 检索的内容建立一个新的数据库,在新的数 据库中,指针查找的范圆较小,达到快速检 索。 6 提 高命令文件运行速 度的方法 “ O ⋯⋯⋯ ⋯退 出 “1 . . ⋯ - 零件 譬排序 “ 2 ⋯⋯零件号检索 7 ,1 7 S AY “ 请 选择 O 一 2 ”GET TT READ I F TT “ 0 ” CLEAR RETURN ENDI F I F TT “l I NDEX ON LJ H TO XXXX LI ST LJ H TO PR1 NT ENDI F I F TT “2 CLEAR S1 l ORE 9 TO PAYl S TORE 0 TO PAY 2 5 ,5 S AY “ 请 输入 需检 索的 零件 号,从 GET PAYI 5 , 2 0 S AY “ 至 GE T PAY2 REA D SET FI LTER TO LJ H PAY1 , AND, GG PAYZ LI S T L3 H , GG TO PRI N T S ET FI LTER TO ENDI F ENDDO U S E RETURN 为了提高检索速度,程序设计中设置了 过滤器条件,使数据库中满足条件的记录按 在磁盘不同子目录下运行DB AS E命令 文件的方法往往是在操作系统下先进入某个 子 目录 ,调 用DB AS E,然 后再运行 第二个 子 目录下的D B AS E 命令文件。 若需要继续 运行第三个子目录下的DB AS E命令文件往 往 是退 出第个 子 目录下的DB AS E状态, 退 出该子目录,然后再进入第三个子目录, 调 入DB AS E, 再运行该子 目录下的 DBAS E 命令文件,这样不仅多次调用DB AS E, 浪 费了用户大量的时间,而且在不同的子目录 下, 至步要存放 两个 DB AS E系统文件 DB AS E . E X E和DB AS E. OVL , 占去了硬 盘大量的空间,因为这两个系统文件的字节 数非常 可观。 针对上述情况,用以下方法,不仅避免 了多次调用DB AS E ,而且无需在不 同的子 目录下放入两个D B AS E 系统文件,仅 需要 根 目 录 下的两个DB AS E 系统文 件目 口 可。 具体方法如下I 首 先调用根 目录下的DB AS E , 从而进 DBAS E状态 l CDB AS E 调 用 根 目 录 下 的 DBASE . 进 DBAS E状态 假如需要运行YS 人事 子目录下的 YS .P R G 命令文件,方法是 .I CD YS √ 进入YS 子 目录 顺便指 出t 本文中的这条与R UNC D Y S 命令等效,下文不再说明。 .D O YS 运行YS . P R G文件 假如需要继续运行Z W 账务 子目录 下的Z W . P R G文件,方法是 .I C D\ 退出●当前 子目录状 维普资讯 {j 簪 存 2 , , 豢 ,f 煤矿机械 1 9 9 3 年第 1 期 实用型材下料优化计算机软件包 j 合 尔滨 煤 F机械 厂王 世 贤 _ - ● - ● ● _ _ - 一 型材 r 利优 化,亦 即剌 料合理套裁 问题 对机械加 L企业的经济效 益有很大影响,心 而一直 为各企业领导 、技 术人 员昕关注, 希 望 改变 利用率较低的 传统下料方式 笔者在 研 究开发 实J H 型 材下料优化 计算机程序 见 参考 文献 1 的基础 上 将其 结 构和功 能怍 了重大改进 ,形成 了一个 型材下料优化 计算机软件包 以下简 称软件包 。 该软件包不仅可以用于黑色 有色金属 及非金属 棒条状材 料的合理 下料,淡利用率 较传统下料方案提 高3 以上 , 降 低 工 时消 耗,而且由于可以自动建立余料数据文件, 对余料进行 管理和再利用,从而进一步提高 材料的综 合利用 率。此 外,该软件包 中的产 品零件披据文件系统 及材料库存 数据文件系 统具 有数 据库 管理 功能,有助于提高企业 的 管理水平 。 谈软件包仍用 B AS [ C语言编写,人机 界面友好 ,操 作简单 实用。它有一个 说明文 仆和两个 系统 说 明文 件是材料代码编码 规 州,两个系统是数据文件管理系统和数据处 .I CD ZW 进入ZW予 H录 .D0 Z w 运行Z W. P R G 文件 值得注意的是, 此方法须在内存太子6 4 0 KB 的 机器上运行 。以上方 法, 只 需要根 目 录下的两个DBAs E系统文 件, 而且 电只 需 要调 用一 次DBAS E, 既节约了用户运行程 理 系 统 。 数批文卡 { 管理 系统有材 料规格、产 - 零 件 、库存材料 、材料余 料、下料设备 5个 数 扭 文 件子系统 数据处理 系统 有产 - 零 件、传统下料方 式处理、余料数据处理 、下料 优化 处理 、结 果打 印、零 散数据处理 G个 子系统 。 两个系统 中各子系统问的调用 关系见 1 口 数据文件管理系统 - 材料规格数据文件 由材料编码规则支持。甩户可以按编码规则 对材料规格数据文件中尚没有而本企业又要 用的材料进行编码,扩充数据。该文件允许 增加和修改数据,但 不支持删除。其它数据 文件中的数据增加和修改时,其材斜数据项 可 阚用材料规格数据文件有关项, 选择 编号 即可直 接输入。 产品零件数据文件子系统、材料库存数 据文件子系统及余料数据文件子系统都具有 数据库管理功能,可对数据进行分 项汇 总统 计及报表打印。 序的时间,又节约 了硬盘空间 ,实践证 明是 可行旧。 7 结论 实践表明,采用以 上几种 程序设 计方 法 ,提 高了数据库 的操作 速度 ,达 到了提高 工教的 目的 。 ~ .. 一 维普资讯