sql优化原则和技巧

sql优化原则和技巧

ID:8970420

大小:329.50 KB

页数:17页

时间:2018-04-13

sql优化原则和技巧_第1页
sql优化原则和技巧_第2页
sql优化原则和技巧_第3页
sql优化原则和技巧_第4页
sql优化原则和技巧_第5页
资源描述:

《sql优化原则和技巧》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、SQL编写及其优化培训温有飘2005年4月28日软脑软件(北京)公司17目录本培训包含的内容如下:41.表、索引相关知识及其在数据库内部相关的物理存储41.1.数据库中最小的物理存储单位:块(block)41.2.表数据在块中的存储以及RowId信息41.3.索引41.4.Bitmap索引介绍62.数据库查询操作的内部处理过程62.1.数据库的数据读取是以块为单位的62.2.查询操作内部过程以及索引的作用62.3.执行计划概念72.4.排序处理过程以及各种引起排序的操作72.5.多表join操作的内

2、部过程73.写SQL语句时在性能方面的目标83.1.select列表中减少不需要的数据83.2.from列表中去除不需要的表83.3.where条件中应该考虑到索引的使用,避免一些写法83.3.1.避免过滤字段中套用函数,如果必须,则考虑函数索引93.3.2.避免把列放入表达式中去比较93.4.避免不需要的排序93.5.避免数据类型的隐式转换93.6.程序代码中的注意点103.6.1.由多个SQL语句完成的一个操作尽可能写成一个SQL就完成,避免分解103.6.2.使用数据库提供的约束来判断某些错误

3、,如唯一性114.SQL语句知识114.1.SQL语句串讲114.1.1.selectf1fromA114.1.2.selectf1fromAwheref2=v_1114.1.3.selectf1fromAorderbyf2114.1.4.selectsum(f1)fromA124.1.5.selectf2,sum(f1)fromAgroupbyf2124.1.6.selecta_f2,b_f2fromA,BwhereA.f1=B.f1124.1.7.Select*fromreportwhereSA

4、LES_CODEin(selectSALES_CODEfromankenwhere…);144.1.8.Select*fromreportwhereSALES_CODEexists(select1fromankenwhere…);144.1.9.in,exists的选择144.1.10.selectyadfwast1,kopeewast2FromAunionallselectuufgerast1,poeprvcx17ast2fromB144.2.几种常见操作或函数154.2.1.比较符like154

5、.2.2.isnull,isnotnull154.2.3.to_char,to_date,to_number154.2.4.nvl164.2.5.其他165.表设计的一些建议16参考文献1617本培训包含的内容如下:n表、索引相关知识及其在数据库内部相关的物理存储;n数据库查询操作的内部处理过程;n写SQL语句时在性能方面的目标;nSQL语句知识;n表设计的一些建议下面阐述的内容以Oracle为例来讲述的,在排版方面可能有不妥当的地方,或有些内容前后重复,但各种知识应该比较容易理解和接受;1.表、索

6、引相关知识及其在数据库内部相关的物理存储1.1.数据库中最小的物理存储单位:块(block)数据库最小的物理存储单位是块(9i默认是8k),每个块只能属于一个表;一行数据插入时会占用块中的一些存储,当块不能再容纳新数据时,则将启用新的块存储数据;1.2.表数据在块中的存储以及RowId信息表的字段除了设计者设计的字段外,还有个字段Rowid;RowId是oracle为每个表自动增加的一个字段。当表中插入一行记录时,此记录在块就有一个唯一的物理位置,这个位置信息就保存在此行记录的RowId字段;1.3

7、.索引表中记录的存储顺序是以先后插入顺序存储的,在一个数据量很大的表中,如果不引入其他的手段,每次查找小部分记录都是从第一条扫描到最后一条,这样,系统将慢得不能使用;使用索引可以有效解决问题;如图:17Report表(100万条记录)RowIdSession_codeSales_codeEmployee_code…AAANslAAQAAA7YTAAh100061000017AAANslAAYAAAAmWAAX10007100015。。。………索引Employee_codeRowId5AAANslAA

8、YAAAAmWAAX17AAANslAAQAAA7YTAAh……索引的本质用途是通过它使读取进程在扫描源表时的数据块范围大大减小了,因此性能大幅度提高;一般情况下,当检索的记录与所有记录数比较<=4%时,索引是很有效的,当比例更大时,索引反而有可能降低性能,因为即使使用了索引,读取进程还是扫描了大部分的表中的块,如果这样,倒不如不用索引直接扫描源表,因为减少了读取索引的块的开销;当索引建好后,oracle优化器在执行sql时会选择是否使用索引,所以设计表者不用担心此索

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。