- 1、本文档共32页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基本原则 简单的是最有力的; 2/8原则; 性能优化是动力是基于对美的追求。 基本约定 SQL语句书写的约定,如关键字要大写,函数,对象名,变量要小写,一个关键字一行,每行以关键字右对齐,等号左右各空一位等,各个部分仅空一格; 在SQL语句中对于值非常多的列条件要用变量绑定,不要用常量;对于值少记录多,且分布不均匀,如果要用上该列的索引,就要用常量。 在SQL语句中尽量不要用左值函数; 查询条件的顺序要尽量能够利用已有索引,如果不能利用现有的索引而需要新建综合索引,索引列的顺序、查询条件的顺序要和表中的列顺序一致。 如果能够确保两个输出值集没有重复值,Union All 比Union 有效率。 一些建议 某些复杂和耗时的SQL语句可以考虑采用几个语句来完成。 对使用外连接的语句,可以尝试用一些组合语句来代替。 如果能够用行操作SQL语句完成,不要用集操作SQL(如count, Distinct, minus, intersect)语句完成。 问题1 SELECT BOARD_BARCODE FROM SMT_BOARD_WORK_REC bwr, SMT_DEP_TASK_INFO dti WHERE BOARD_BARCODE=025767102A000842 AND dti.Second_Series=标准 and bwr.Task_No=dti.Task_No AND PROC_ORDER=1; SELECT BOARD_BARCODE FROM SMT_BOARD_WORK_REC bwr,SMT_DEP_TASK_INFO dti WHERE BOARD_BARCODE=:b1 AND dti.Second_Series=标准 and bwr.Task_No=dti.Task_No AND PROC_ORDER=1; 效果 下面是使用文字变量和绑定变量通过Spotlight进行对比的观察结果。不良代码为执行1500行操作,将同样的SQL解释了500次,对应的在内存中占用500倍的空间,带来严重的latch争用。 问题2 SELECT ROWID, organization_id, wip_entity_name, cpb_bar_code, cpb_revision, cpb_item_id, zcb_bar_code, zcb_revision, zcb_item_id, created_date, created_by, last_updated_by, last_updated_date, collect_userFROM hw_cpb_relationWHERE TO_CHAR (created_date, yyyy/mm/dd hh24:mi:ss) = 2002/10/16 15:16:06 SELECT ROWID, organization_id, wip_entity_name, cpb_bar_code, cpb_revision, cpb_item_id, zcb_bar_code, zcb_revision, zcb_item_id, created_date, created_by, last_updated_by, last_updated_date, collect_userFROM hw_cpb_relationWHERE created_date =to_date(:b1, yyyy/mm/dd hh24:mi:ss’) 索引的创建 索引的建立原则 对于值不多但记录非常多,且值分布比较均匀的字段,基于此字段的索引对查询的优化没有作用,同时带来Insert操作时索引的维护开销; 对于状态类字段,值不多,如果记录多,但这些记录在状态中的分布极不均匀,可以建立索引,索引的条件带常量才可用到索引。 索引的使用 编写sql的一些技巧 为什么索引没有被使用 DB link 的优化(1) 驱动表的选择:对于有一个DB Link的语句,选取远程表作为驱动表 select COMPANY.Name from COMPANY, SALES@REMOTE1 where COMPANY.Company_ID
文档评论(0)