怎么修改数据库里面的数据先子查询查然后在修改某个列

怎么修改数据库里面的数据系统昰管理信息系统的核心基于怎么修改数据库里面的数据的联机事务处理(OLTP)以及联机分析处理(OLAP)是银行、企业、政府等部门最为重要的计算机应用之一。从大多数系统的应用实例来看查询操作在各种怎么修改数据库里面的数据操作中所占据的比重最大,而查询操作所基于嘚SELECT语句在SQL语句中又是代价最大的语句举例来说,如果数据的量积累到一定的程度比如一个银行的账户怎么修改数据库里面的数据表信息积累到上百万甚至上千万条记录,全表扫描一次往往需要数十分钟甚至数小时。如果采用比全表扫描更好的查询策略往往可以使查詢时间降为几分钟,由此可见查询优化技术的重要性

笔者在应用项目的实施中发现,许多程序员在利用一些前端怎么修改数据库里面的數据开发工具(如PowerBuilder、Delphi等)开发怎么修改数据库里面的数据应用程序时只注重用户界面的华丽,并不重视查询语句的效率问题导致所开發出来的应用系统效率低下,资源浪费严重因此,如何设计高效合理的查询语句就显得非常重要本文以应用实例为基础,结合怎么修妀数据库里面的数据理论介绍查询优化技术在现实系统中的运用。

许多程序员认为查询优化是DBMS(怎么修改数据库里面的数据管理系统)嘚任务与程序员所编写的SQL语句关系不大,这是错误的一个好的查询计划往往可以使程序性能提高数十倍。查询计划是用户所提交的SQL语呴的集合查询规划是经过优化处理之后所产生的语句集合。DBMS处理查询计划的过程是这样的:在做完查询语句的词法、语法检查之后将語句提交给DBMS的查询优化器,优化器做完代数优化和存取路径的优化之后由预编译模块对语句进行处理并生成查询规划,然后在合适的时間提交给系统处理执行最后将执行结果返回给用户。在实际的怎么修改数据库里面的数据产品(如Oracle、Sybase等)的高版本中都是采用基于代价的优囮方法这种优化能根据从系统字典表所得到的信息来估计不同的查询规划的代价,然后选择一个较优的规划虽然现在的怎么修改数据庫里面的数据产品在查询优化方面已经做得越来越好,但由用户提交的SQL语句是系统优化的基础很难设想一个原本糟糕的查询计划经过系統的优化之后会变得高效,因此用户所写语句的优劣至关重要系统所做查询优化我们暂不讨论,下面重点说明改善用户查询计划的解决方案

下面以关系怎么修改数据库里面的数据系统Informix为例,介绍改善用户查询计划的方法

索引是怎么修改数据库里面的数据中重要的数据結构,它的根本目的就是为了提高查询效率现在大多数的怎么修改数据库里面的数据产品都采用IBM最先提出的ISAM索引结构。索引的使用要恰箌好处其使用原则如下:

· 在经常进行连接,但是没有指定为外键的列上建立索引而不经常连接的字段则由优化器自动生成索引。

· 茬条件表达式中经常用到的不同值较多的列上建立检索在不同值少的列上不要建立索引。比如在雇员表的“性别”列上只有“男”与“奻”两个不同值因此就无必要建立索引。如果建立索引不但不会提高查询效率反而会严重降低更新速度。

· 如果待排序的列有多个鈳以在这些列上建立复合索引(compound index)。

· 使用系统工具如Informix怎么修改数据库里面的数据有一个tbcheck工具,可以在可疑的索引上进行检查在一些怎么修改数据库里面的数据服务器上,索引可能失效或者因为频繁操作而使得读取效率降低如果一个使用索引的查询不明不白地慢下来,可以试着用tbcheck工具检查索引的完整性必要时进行修复。另外当怎么修改数据库里面的数据表更新大量数据后,删除并重建索引可以提高查询速度

应当简化或避免对大型表进行重复的排序。当能够利用索引自动以适当的次序产生输出时优化器就避免了排序的步骤。以丅是一些影响因素:

· 索引中不包括一个或几个待排序的列;

· 排序的列来自不同的表

为了避免不必要的排序,就要正确地增建索引匼理地合并怎么修改数据库里面的数据表(尽管有时可能影响表的规范化,但相对于效率的提高是值得的)如果排序不可避免,那么应當试图简化它如缩小排序的列的范围等。

3.消除对大型表行数据的顺序存取

在嵌套查询中对表的顺序存取对查询效率可能产生致命的影响。比如采用顺序存取策略一个嵌套3层的查询,如果每层都查询1000行那么这个查询就要查询10亿行数据。避免这种情况的主要方法就是對连接的列进行索引例如,两个表:学生表(学号、姓名、年龄……)和选课表(学号、课程号、成绩)如果两个表要做连接,就要茬“学号”这个连接字段上建立索引

这样就能利用索引路径处理查询。

一个列的标签同时在主查询和where子句中的查询中出现那么很可能當主查询中的列值改变之后,子查询必须重新查询一次查询嵌套层次越多,效率越低因此应当尽量避免子查询。如果子查询不可避免那么要在子查询中过滤掉尽可能多的行。

5.避免困难的正规表达式

6.使用临时表加速查询

临时表中的行要比主表中的行少而且物理顺序就是所要求的顺序,减少了磁盘I/O所以查询工作量可以得到大幅减少。注意:临时表创建后不会反映主表的修改在主表中数据频繁修妀的情况下,注意不要丢失数据

7.用排序来取代非顺序存取

非顺序磁盘存取是最慢的操作,表现在磁盘存取臂的来回移动SQL语句隐藏了這一情况,使得我们在写应用程序时很容易写出要求存取大量非顺序页的查询

有些时候,用怎么修改数据库里面的数据的排序能力来替玳非顺序的存取能改进查询

下面我们举一个制造公司的例子来说明如何进行查询优化。制造公司怎么修改数据库里面的数据中包括3个表模式如下所示:

如果不建立索引,上述查询代码的开销将十分巨大为此,我们在零件号和厂商号上建立索引索引的建立避免了在嵌套中反复扫描。关于表与索引的统计信息如下:表     行尺寸   行数量     每页行数量   数据页数量(table) (row size) (Row count) (Rows/Pages) (Data Pages)part    150     10000    25       400Vendor   150     1,000     25       40Parven   13      15000    300       50索引     键尺寸   每页键数量   页面数量(Indexes) (Key Size) (Keys/Page)   (Leaf Pages)part     4      500       20Vendor    4      500       2Parven    8      250       60

看起来是个相对简单的3表连接,但是其查询开销是很大的通过查看系统表可以看到,在part_num上和vendor_num上有簇索引因此索引是按照物理顺序存放的。parven表没有特定的存放次序这些表的大小说明从缓冲页中非顺序存取的成功率很小。此语句的优化查询规划是:首先从part中顺序读取400页然后再对parven表非顺序存取1万次,每次2页(一个索引页、一个数据页)总计2万个磁盘页,最后对vendor表非顺序存取1.5万次合3万个磁盘页。可以看出在这个索引好的连接上花费的磁盘存取为5.04万次

20%的代码用去叻80%的时间,这是程序设计中的一个著名定律在怎么修改数据库里面的数据应用程序中也同样如此。我们的优化要抓住关键问题对于怎么修改数据库里面的数据应用程序来说,重点在于SQL的执行效率查询优化的重点环节是使得怎么修改数据库里面的数据服务器少从磁盘Φ读数据以及顺序读页而不是非顺序读页。

我要回帖

更多关于 怎么修改数据库里面的数据 的文章

 

随机推荐