暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
SQL数据库查询优化.doc
37
11页
1次
2025-04-29
免费下载
一个实例讲解 MySQL 查询优化
数据库系统是管理信息系统的核心,基于数据库的联机事务处理(OLTP)以及联机分
析处理(OLAP)是银行、企业、政府等部门最为重要的计算机应用之一。从大多数系统的
应用实例来看,查询操作在各种数据库操作中所占据的比重最大,而查询操作所基于的
SELECT 语句在 SQL 语句中又是代价最大的语句。举例来说,如果数据的量积累到一定
的程度,比如一个银行的账户数据库表信息积累到上百万甚至上千万条记录,全表扫描一
次往往需要数十分钟,甚至数小时。如果采用比全表扫描更好的查询策略,往往可以使查
询时间降为几分钟,由此可见查询优化技术的重要性。
笔者在应用项目的实施中发现,许多程序员在利用一些前端数据库开发工具(
PowerBuilderDelphi )开发数据库应用程序时,只注重用户界面的华丽,并不重视
查询语句的效率问题,导致所开发出来的应用系统效率低下,资源浪费严重。因此,如何
设计高效合理的查询语句就显得非常重要。本文以应用实例为基础,结合数据库理论,介
绍查询优化技术在现实系统中的运用。
分析问题
许多程序员认为查询优化是 DBMS(数据库管理系统)的任务,与程序员所编写的 SQL
语句关系不大,这是错误的。一个好的查询计划往往可以使程序性能提高数十倍。查询计
划是用户所提交的 SQL 语句的集合,查询规划是经过优化处理之后所产生的语句集合。
DBMS 处理查询计划的过程是这样的:在做完查询语句的词法、语法检查之后,将语句提
交给 DBMS 的查询优化器,优化器做完代数优化和存取路径的优化之后,由预编译模块
对语句进行处理并生成查询规划,然后在合适的时间提交给系统处理执行,最后将执行结
果返回给用户。在实际的数据库产品( OracleSybase )的高版本中都是采用基于代
价的优化方法,这种优化能根据从系统字典表所得到的信息来估计不同的查询规划的代价,
然后选择一个较优的规划。虽然现在的数据库产品在查询优化方面已经做得越来越好,但
由用户提交的 SQL 语句是系统优化的基础,很难设想一个原本糟糕的查询计划经过系统
的优化之后会变得高效,因此用户所写语句的优劣至关重要。系统所做查询优化我们暂
论,下面重明改善用户查询计划的解
问题
下面以关系数据库系统 Informix 为例,介绍改善用户查询计划的方法。
1.合理使用索引
索引数据库中重要的数据结的根本目的就是为提高查询效率。现在大多数
数据库产品都采用 IBM 提出的 ISAM 索引索引的使用要到好处,使用原
如下:
在经常进行连接,但是没有指定为外键建立索引,而不经常连接的字段则
优化器自动生成索引
频繁进行(进行 group by order by 操作)建立索引
在条达式中经常用到的不同较多的建立,在不同值少上不要
立索引。比如在员表的别”列上只有“男”“女”两个不同,因此就无必建立索引
如果建立索引不但不会提高查询效率,而会严重降低更新速度。
如果待排序的列有多个,可以在这些建立复索引(compound index)
使用系统工具。如 Informix 数据库一个 tbcheck 工具,可以在可索引上进
行检查。在一些数据库务器上,索引可能者因为频繁操作而使得取效率降低,
如果一个使用索引的查询不白地慢下来,可以试着 tbcheck 工具检查索引的完
性,要时进行修复另外数据库表更大量数据后,删除并重建索引可以提高查询
度。
2.避免或简
当简或避免对大表进行重序。利用索引自动以适的次序产生
of 11
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜