数据库的查询优化方法分析.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库的查询优化方法分析 0 引言 随着计算机应用的深入 ,计算机技术的成熟 , 各种应用软件 的普及,应用数据也随着日常工作而迅速增长 , 作为数据仓库的 数据库的重要性也日益显著。 数据库系统作为管理信息系统的核心 , 各种基于数据库的联 机事务处理以及联机分析处理正慢慢的转变成为计算机应用的 最为重要的部分 ,根据以往大量的应用实例来看 , 在数据库的各 种操作中 , 查询操作所占的比重最大 , 而在查询操作中基于 SELECT语句在SQL语句中又是代价最大的语句。如果在使用中 采用了优秀的查询策略 ,往往可以降低查询的时间 , 提高查询的 效率,由此可见查询优化在数据库中的重要性。本文就数据库查 询优化中的策略进行介绍及探索。 1 基于索引的优化 数据库的优化方法多种多样 , 不同的方法对提高数据库查询 效率也不相同。 索引作为数据库中的重要数据结构 , 它的根本目的就是为 了提高查询的效率。而优化查询的重要方法就是建立索引 , 建立 适合关系数据库系统的索引 ,这样就可以避免表扫描 , 并减少了 因为查询而造成的输入输出开销 , 有效提高数据库数据的查询速 度, 优化了数据库性能。然而在创建索引时也增加了系统时间和 空间的开销。所以创建索引时应该与实际查询需求相结合 , 这样 才能实现真正的优化查询。 判断并建立必要的索引 对所要创建的索引进行正确的 判断 ,使所创建的索引对数据库的工作效率提高有所帮助。为了 实现这一点 , 我们应做到以下要求 : 在熟记数据库程序中的相关 SQL语句的前提下,统计出常用且对性能有影响的语句;判断数据 库系统中哪些表的哪些字段要建立索引。其次 , 对数据库中操作 频繁的表 , 数据流量较大的表 , 经常需要与其他表进行连接的表 等,要进行重点关注。这些表上的索引将对 SQL语句的性能产生 重要的影响。 对索引使用的一些规则 索引的使用在一些大型数据库 系统中会经常使用到 , 这样可以有效的提高数据库性能 , 使数据 库的访问速度得到提高。但索引的使用要恰倒好处 , 所以我们在 使用索引时应遵守使用原则 : 建立索引可以提高数据库的查询速 度, 但索引过多 , 不但不能实现优化查询 , 反而会影响到数据库的 整体性能。索引作为数据库中实际存在的对象 , 每个索引都要占 用一定的物理空间。 所以对于索引的建立要考虑到物理空间容量 以及所建立索引的必要性和实用性。 1.3合理的索引对SQL语句的意义索引建立之后,还要确 保其得到了真正的使用 , 发挥了其应有的作用。首先 , 可以通过 SQL语句查询来确定所建立的索引是否得到了使用,找出没有使 用到的索引。分析索引建立但没有使用的原因 , 使其真正发挥作 用。其次 ,索引得到使用以后 ,是否得到了预期的效果 , 对数据库 的性能是否实现了真正意义上的提高 , 只有合理的索引才能真正 提高数据库的性能。 2优化SQL语句 在使用索引时可以有效的提高查询速度,但如果SQL语句使 用不恰当的话 , 所建立的索引就不能发挥其作用。所以我们应该 做到不但会写SQL还要写出性能优良的SQL语句。下面,就如何 优化引用例子进行说明。 首先, 在进行查询时 , 返回的值应该是查询所需要的。 在查询 中应该尽量减少对数据库中的表的访问行数 , 使查询的结果范围 最小,这就意味着在查询时 , 不能过多的使用通配符 , 如 :select*from table1 语句 , 而应该做到最小化查询范围 , 要查 询几行几列就选择几行几列,如:select coll from tablel; 多数 情况下 , 用户并不需要查询到的所有数据 , 而只是部分或靠前的 数据时,我们也可以通过SQL语句来进行限制查询的结果, 如 :select top 50 col1 from table1 。 其次,对于一些特殊的SQL语句,在使用时应正确选择。我们 用一组例子来说明,如:EXISTS,NOT EXISTS。 语句一 :select sum(t1.c1) from t1 where((select count(*)from t2 where t2.c2=t1.c2)0) 语句二:select sum(t1.c1) from t1 where exists(select*from t2 where t2.c2=t1.c1) 两个语句所得到的结果相同 , 但 , 语句二的效率要远高于语 句一 ,因为语句一在查询中产生了大量的索引扫描。 在对数据库查询时 ,所使用的语句多种多样 , 但选择恰当的 的字句能够有效的提高查询效率。 最后,WHERE子句在使用时应该注意的问题。 在 WHER子句中可以使用 exist 和not exist代替in和not in 。应该尽量避免使用 in

文档评论(0)

xiaozu + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档