- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据库查询系统的优化新探
0. 引言
数据库系统作为管理信息系统的核心, 各种基于数据库的联 机事务处理以及联机分析处理正逐渐成为计算机应用的最为重 要的部分, 根据以往大量的应用实例来看, 在数据库的各种操作 中,查询操作所占的比重最大,而在查询操作中基于 SELECT吾
句在SQL语句中又是代价最大的语句。 在实际工作中,无论是对 数据库系统, 还是对数据库应用系统, 查询系统优化一直是一个 热门话题。 一个成功的数据库应用系统的开发, 肯定会在查询优 化上付出很多心血。 对查询优化的处理, 不仅会影响到数据库工 作效率, 而且会给公司带来实实在在的效益问题。 本文就数据库 查询系统的优化谈几点粗浅认识。
1. 数据库查询系统的优化方法
1.1 谨慎使用通配符
1.2 建立索引
索引作为数据库中的重要数据结构, 它的根本目的就是为了 提高查询的效率。 而优化查询的重要方法就是建立适合关系数据 库系统的索引, 这样就可以避免表扫描, 并减少了因为查询而造 成的输入输出, 有效提高数据库数据的查询速度, 优化了数据库 性能。 创建索引时应该与实际查询需求相结合, 这样才能实现真 正的优化查询。 对所要创建的索引进行正确的判断, 使所创建的
索引对数据库的工作效率提高有所帮助。 为了实现这一点, 我们 应做到以下要求:在熟记数据库程序中的相关 SQL语句的前提
下,统计出常用且对性能有影响的语句; 判断数据库系统中哪些 表的哪些字段要建立索引。其次,对数据库中操作频繁的表,数 据流量较大的表, 经常需要与其他表进行连接的表等, 要进行重 点关注。这些表上的索引将对 SQL语句的性能产生重要的影响。 建立索引可以提高数据库的查询速度, 但索引过多, 不但不能实 现优化查询, 反而会影响到数据库的整体性能。 索引作为数据库 中实际存在的对象, 每个索引都要占用一定的物理空间。 所以对 于索引的建立要考虑到物理空间容量, 以及所建立索引的必要性 和实用性。索引建立之后,还要确保其得到了真正的使用,发挥 了其应有的作用。首先,可以通过SQL语句查询来确定所建立的 索引是否得到了使用, 找出没有使用到的索引。 分析索引建立但 没有使用的原因, 使其真正发挥作用。 其次,索引得到使用以后, 是否得到了预期的效果, 对数据库的性能是否实现了真正意义上 的提高,只有合理的索引才能真正提高数据库的性能。
1.3 选择最佳的解决方案 解决同一问题的方法固然很多 , 但应用中应该选择最佳的解 决方法。例如 , 对某一问题的数据库查询有两种方法 ,执行结果一 样, 效率却不同。 如果在程序运行界面上输入了负责人代码 (放到 code中),那么将查询P2000表中负责人代码等于 code的负责人 名;如果没有输入负责人代码,那么查询P2000表中所有负责人
名。负责人代码的取值范围是 0?9999,两种解决方法分别是:
(1) IF 没有输入负责人代码 THEN
code1=0
code2=9999
ELSE
code1=code2=^ 责人代码
END IF
执行SQL语句为:
SELECT负责人名
FROM P2000
WHER负责人代码=:code1 AND负责人代码
1001) or order_num = 1008
虽然在 customer_num 和 order_num 上建了索引,但是在上 面的语句中优化器还是会使用顺序扫描整个表。 因为这个语句要 检索的是分离的行的集合,所以应该改为如下语句:
select * from orders where customer_num=104and order_num 1001
union h
select * from orders wher eorder_num = 1008 h 这样就能利用索引来处理查询。
1.5 尽量减少对数据库的访问次数 通过搜索参数,尽量减少对表的访问行数 , 最小化结果集, 从而减轻网络负担;能够分开的操作尽量分开处理, 提高每次的 响应速度;在数据窗口使用SQL时,尽量把使用的索引放在选择 的首列;算法的结构尽量简单;在查询时,不要过多地使用通配 符如SELECT FROMT1语句,要用到几列就选择几列,女口: SELECT C0L1,C0L2 FROM T1在可能的情况下尽量限制尽量结果集行数 如:SELECT TOP 300 COL1,COL2,COL3 FROM 因为某些情况下 用户是不需要那么多的数据的。
2.结束语
综上所述,为了根本解决数据库查询优化问题 , 还需从设计 上进行优化 , 如尽量使用大的内存 ,对于频繁使用的表建立索引 , 面向对象的数据库设计方法等等。■
文档评论(0)