- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(sql执行顺序和原理
一、sql语句的执行步骤:?1)语法分析,分析语句的语法是否符合规范,衡量语句中各表达式的意义。?2) 语义分析,检查语句中涉及的所有数据库对象是否存在,且用户有相应的权限。?3)视图转换,将涉及视图的查询语句转换为相应的对基表查询语句。?4)表达式转换, 将复杂的 SQL 表达式转换为较简单的等效连接表达式。?5)选择优化器,不同的优化器一般产生不同的“执行计划”?6)选择连接方式, ORACLE 有三种连接方式,对多表连接 ORACLE 可选择适当的连接方式。?7)选择连接顺序, 对多表连接 ORACLE 选择哪一对表先连接,选择这两表中哪个表做为源数据表。?8)选择数据的搜索路径,根据以上条件选择合适的数据搜索路径,如是选用全表搜索还是利用索引或是其他的方式。?9)运行“执行计划”?二、oracle 共享原理:?ORACLE将执行过的SQL语句存放在内存的共享池(shared buffer pool)中,可以被所有的数据库用户共享 当你执行一个SQL语句(有时被称为一个游标)时,如果它和之前的执行过的语句完全相同, ORACLE就能很快获得已经被解析的语句以及最好的 执行路径. 这个功能大大地提高了SQL的执行性能并节省了内存的使用?三、oracle 语句提高查询效率的方法:1: wherecolumnin(select*from ... where ...); 2:... whereexists (selectXfrom ...where ...); 第二种格式要远比第一种格式的效率高。在Oracle中可以几乎将所有的IN操作符子查询改写为使用EXISTS的子查询 使用EXIST,Oracle系统会首先检查主查询,然后运行子查询直到它找到第一个匹配项,这就节省了时间 Oracle系统在执行IN子查询时,首先执行子查询,并将获得的结果列表存放在在一个加了索引的临时表中 避免使用having字句 避免使用HAVING子句, HAVING 只会在检索出所有记录之后才对结果集进行过滤. 这个处理需要排序,总计等操作. 如果能通过WHERE子句限制记录的数目,那就能减少这方面的开销?SQL Select语句完整的执行顺序:?1、from子句组装来自不同数据源的数据;?2、where子句基于指定的条件对记录行进行筛选;?3、group by子句将数据划分为多个分组;?4、使用聚集函数进行计算;?5、使用having子句筛选分组;?6、计算所有的表达式;?7、使用order by对结果集进行排序?逻辑查询处理步骤?代码如下:?
Java代码??
(8)SELECT?(9)DISTINCT???
(11)TOP_specification?select_list???
(1)FROM?left_table???
(3)join_type?JOIN?right_table???
(2) ?ON?join_condition???
(4)WHERE?where_condition???
(5)GROUP?BY?group_by_list???
(6)WITH?{CUBE?ROLLUP}???
(7)HAVING?having_condition???
(10)ORDER?BY?order_by_list???
每个步骤产生一个虚拟表,该虚拟表被用作下一个步骤的输入。只有最后一步生成的表返回给调用者。如?果没有某一子句,则跳过相应的步骤。?1. FROM:对FROM子句中的前两个表执行笛卡尔积,生成虚拟表VT1。?2. ON:对VT1应用ON筛选器。只有那些使join_condition为真的行才被插入VT2。?3. OUTER(JOIN):如果指定了OUTER JOIN,保留表中未找到匹配的行将作为外部行添加到VT2,生成VT3。?如果FROM子句包含两个以上的表,则对上一个联接生成的结果表和下一个表重复执行步骤1到步骤3,直到?处理完所有的表为止。?4. 对VT3应用WHERE筛选器。只有使where_condition为TRUE的行才被插入VT4。?5. GROUP BY:按GROUP BY 子句中的列列表对VT4中的行分组,生成VT5。?6. CUBEROLLUP:把超组插入VT5,生成VT6。?7. HAVING:对VT6应用HAVING筛选器。只有使having_condition为TRUE的组才会被插入VT7。?8. SELECT:处理SELECT列表,产生VT8。?9. DISTINCT:将重复的行从VT8中移除,产生VT9。?10. ORDER BY:将VT9中的行按ORDER BY子句中的列列表排序,生成一个有表(VC10)。?11. T
您可能关注的文档
最近下载
- 美剧剧本怪诞小镇台词本中英文对照精排版第一季第一集.pdf VIP
- 小学英语课堂教学中问题情境创设策略的研究.pdf VIP
- 基金会筹备工作方案.pdf VIP
- 2025年上海市高考语文散文构思题及答案汇编.pdf VIP
- 2023年初中美术课题研究方案.docx VIP
- GB/T 14571.4-2022工业用乙二醇试验方法 第4部分:紫外透光率的测定 紫外分光光度法.pdf
- 中国国家标准 GB/T 14571.3-2022工业用乙二醇试验方法 第3部分:醛含量的测定.pdf
- 出入院制度流程.pptx VIP
- 国家标准 GBT 3049-2006 工业用化工产品 铁含量测定的通用方法 1,10-菲啰啉分光光度法.pdf
- FIDIC银皮书(中英文对照),.doc VIP
文档评论(0)