蒙在股里 发表于 2015-1-16 22:39:54

MYSQL网页编程之ORACLE SQL功能优化系列 (八)

要想在MySQL与其他数据库之间进行一个面面俱到的功能设置对比,并不是一件容易的MySQL学习教程。随着新软件版本的发布或一些补丁的推出。oracle|功能|优化
25.用索引进步效力



索引是表的一个观点部分,用来进步检索数据的效力.实践上,ORACLE利用了一个庞大的自均衡B-tree布局.一般,经由过程索引查询数据比全表扫描要快.当ORACLE找出实行查询和Update语句的最好路径时,ORACLE优化器将利用索引.一样在联合多个表时利用索引也能够进步效力.另外一个利用索引的优点是,它供应了主键(primarykey)的独一性考证.

除那些LONG或LONGRAW数据范例,你能够索引几近一切的列.一般,在年夜型表中利用索引出格无效.固然,你也会发明,在扫描小表时,利用索引一样能进步效力.

固然利用索引能失掉查询效力的进步,可是我们也必需注重到它的价值.索引必要空间来

存储,也必要按期保护,每当有纪录在表中增减或索引列被修正时,索引自己也会被修正.这意味着每笔记录的INSERT,DELETE,UPDATE将为此多支付4,5次的磁盘I/O.由于索引必要分外的存储空间和处置,那些不用要的索引反而会使查询反响工夫变慢.



译者按:

按期的重构索引是有需要的.

ALTERINDEX<INDEXNAME>REBUILD<TABLESPACENAME>



26.索引的操纵



ORACLE对索引有两种会见形式.



索引独一扫描(INDEXUNIQUESCAN)



年夜多半情形下,优化器经由过程WHERE子句会见INDEX.



比方:

表LODGING有两个索引:创建在LODGING列上的独一性索引LODGING_PK和创建在MANAGER列上的非独一性索引LODGING$MANAGER.







SELECT*

FROMLODGING

WHERELODGING=‘ROSEHILL’;



在外部,上述SQL将被分红两步实行,起首,LODGING_PK索引将经由过程索引独一扫描的体例被会见,取得绝对应的ROWID,经由过程ROWID会见表的体例实行下一步检索.

假如被检索前往的列包含在INDEX列中,ORACLE将不实行第二步的处置(经由过程ROWID会见表).由于检索数据保留在索引中,单单会见索引就能够完整满意查询了局.

上面SQL只必要INDEXUNIQUESCAN操纵.



SELECTLODGING

FROMLODGING

WHERELODGING=‘ROSEHILL’;



索引局限查询(INDEXRANGESCAN)

合用于两种情形:

1.基于一个局限的检索

2.基于非独一性索引的检索



例1:



SELECTLODGING

FROMLODGING

WHERELODGINGLIKE‘M%’;



WHERE子句前提包含一系列值,ORACLE将经由过程索引局限查询的体例查询LODGING_PK.因为索引局限查询将前往一组值,它的效力就要比索引独一扫描

低一些.



例2:



SELECTLODGING

FROMLODGING

WHEREMANAGER=‘BILLGATES’;



这个SQL的实行分两步,LODGING$MANAGER的索引局限查询(失掉一切切合前提纪录的ROWID)和下一步同过ROWID会见表失掉LODGING列的值.因为LODGING$MANAGER是一个非独一性的索引,数据库不克不及对它实行索引独一扫描.



因为SQL前往LODGING列,而它其实不存在于LODGING$MANAGER索引中,以是在索引局限查询后会实行一个经由过程ROWID会见表的操纵.



WHERE子句中,假如索引列所对应的值的第一个字符由通配符(WILDCARD)入手下手,索引将不被接纳.



SELECTLODGING

FROMLODGING

WHEREMANAGERLIKE‘%HANMAN’;



在这类情形下,ORACLE将利用全表扫描.



(待续)


表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。

谁可相欹 发表于 2015-1-19 21:01:45

SP4包括用于以下SQLServer2000组件的程序包:Database组件(下载文件:SQL2000-KB884525-SP4-x86.EXE)更新SQLServer2000的32位Database组件,包括数据库引擎、复制、客户端连接组件及工具。有关其他信息,请参阅ReadmeSql2k32Sp4.htm。AnalysisServices组件(下载文件:SQL2000.AS-KB884525-SP4-x86.EXE)更新SQLServer2000的32位AnalysisServices。

小妖女 发表于 2015-1-27 11:22:25

习惯敲命令行的朋友可能会爽一些。但是功能有限。适合机器跑不动SQLServerManagementStudio的朋友使用。

蒙在股里 发表于 2015-2-5 07:15:16

只能告诉你,学好数据库语言和原理,多见识几种数据库软件,比一棵树上吊死要好。

老尸 发表于 2015-2-11 08:04:56

一个百万级别的基本信息表A,一个百万级别的详细记录表B,A中有个身份证id,B中也有身份id;先要找出A中在B的详细记录。

小女巫 发表于 2015-3-11 01:27:07

然后最好有实践机会,能够把实践到的和实践结合起来,其实理论思考是个非常困扰和痛苦的事情

小魔女 发表于 2015-3-17 18:09:33

然后最好有实践机会,能够把实践到的和实践结合起来,其实理论思考是个非常困扰和痛苦的事情

飘灵儿 发表于 2015-3-24 18:16:09

SQLServer的异构移植功能个人感觉最好了。(如果对比过SQLServer的链接服务器和Oracle的透明网关的朋友会发现SQLServer的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。)
页: [1]
查看完整版本: MYSQL网页编程之ORACLE SQL功能优化系列 (八)