`
zheyiw
  • 浏览: 1023006 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

SQL查询处理步骤_性能优化

    博客分类:
  • SQL
sql 
阅读更多
先写结论:
1, Inner Join 的On  与  Where  (按方便阅读来书写,查询分析器会自动优化)
2, 先写Inner Join 再写Left Join
3, 先连接数据量小的表 再连接数据量大的表
4, 如果同时有Left Join和Group By, 先Group By到临时表, 再用临时表Left Join其他数据 
4, 优化时,如果同时有Left Join和Inner Join, 先Inner Join到临时表 再用临时表Left Join 其他数据
5, 无非必要不要排序


SQL 查询处理步骤[转载]

SQL 不同于与其他编程语言的最明显特征是处理代码的顺序。在大数编程语言中,代码按编码顺序被处理,但是在SQL语言中,第一个被处理的子句是FROM子句,尽管SELECT语句第一个出现,但是几乎总是最后被处理。
每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入。这些虚拟表对调用者(客户端应用程序或者外部查询)不可用。只是最后一步生成的表才会返回 给调用者。如果没有在查询中指定某一子句,将跳过相应的步骤。下面是对应用于SQL server 2000和SQL Server 2005的各个逻辑步骤的简单描述。
逻辑查询处理阶段简介
FROM:对FROM子句中的前两个表执行笛卡尔积(Cartesian product)(交叉联接),生成虚拟表VT1
ON:对VT1应用ON筛选器。只有那些使<join_condition>为真的行才被插入VT2。
OUTER(JOIN):如 果指定了OUTER JOIN(相对于CROSS JOIN 或(INNER JOIN),保留表(preserved table:左外部联接把左表标记为保留表,右外部联接把右表标记为保留表,完全外部联接把两个表都标记为保留表)中未找到匹配的行将作为外部行添加到 VT2,生成VT3.如果FROM子句包含两个以上的表,则对上一个联接生成的结果表和下一个表重复执行步骤1到步骤3,直到处理完所有的表为止。
WHERE:对VT3应用WHERE筛选器。只有使<where_condition>为true的行才被插入VT4.
GROUP BY:按GROUP BY子句中的列列表对VT4中的行分组,生成VT5.
CUBE|ROLLUP:把超组(Suppergroups)插入VT5,生成VT6.
HAVING:对VT6应用HAVING筛选器。只有使<having_condition>为true的组才会被插入VT7.
SELECT:处理SELECT列表,产生VT8.
DISTINCT:将重复的行从VT8中移除,产生VT9.
ORDER BY:将VT9中的行按ORDER BY 子句中的列列表排序,生成游标(VC10).
TOP:从VC10的开始处选择指定数量或比例的行,生成表VT11,并返回调用者。
注:步骤10,按ORDER BY子句中的列列表排序上步返回的行,返回游标VC10.这一步是第一步也是唯一一步可以使用SELECT列表中的列别名的步骤。这一步不同于其它步骤的 是,它不返回有效的表,而是返回一个游标。SQL是基于集合理论的。集合不会预先对它的行排序,它只是成员的逻辑集合,成员的顺序无关紧要。对表进行排序 的查询可以返回一个对象,包含按特定物理顺序组织的行。ANSI把这种对象称为游标。理解这一步是正确理解SQL的基础。
因为这一步不返回表(而是返回游标),使用了ORDER BY子句的查询不能用作表表达式。表表达式包括:视图、内联表值函数、子查询、派生表和共用表达式。它的结果必须返回给期望得到物理记录的客户端应用程序。


分享到:
评论

相关推荐

    MICROSOFT_SQL_SERVER_7_性能优化(下)

    综上所述,SQL Server 7的性能优化涉及到多个层面,包括查询优化、索引策略、存储配置、事务处理、高级特性的使用、性能监控以及硬件配置。通过对这些方面的深入理解和实践,可以有效提升SQL Server 7的运行效率,为...

    ORACLE_SQL性能优化(全).ppt

    【Oracle SQL性能优化】 Oracle SQL性能优化是数据库开发人员必须掌握的关键技能,它涉及到SQL语句的编写、执行过程、优化器的选择以及执行计划的分析等多个方面。在Oracle数据库环境中,优化SQL性能对于提升系统...

    关系查询处理及优化_sqlserver_

    在"关系查询处理及优化.pptx"这个课件中,你将能够找到更详细的信息,包括具体的SQL查询优化技巧、查询优化器的工作原理、索引的创建与管理等内容,这对于提升你在数据库管理领域的专业能力非常有帮助。

    sql数据库查询_java_java_sqlserver_sql_

    在实际项目中,还需要考虑性能优化、安全性和事务处理等方面。例如,使用PreparedStatement防止SQL注入,通过批处理减少网络通信,合理设计数据库架构以优化查询效率,以及正确设置连接池来管理数据库连接。 在...

    SQLserver2008查询性能优化

    在SQL Server 2008中,查询性能优化是一项至关重要的任务,因为它直接影响到数据库系统的响应时间和整体效率。本文将探讨几个关键的优化策略,尤其是关于索引的创建和管理。 首先,创建有用的索引是提升查询性能的...

    数据库SQL查询处理及其优化方法的研究

    通过对SQL查询处理流程的深入了解以及实施有效的优化策略,可以显著提高数据库应用的性能和效率。此外,合理的硬件配置同样不可或缺,它能够为查询优化提供坚实的物质基础。未来的研究方向可以进一步探索自动化的...

    SQL.rar_SQL ppt_sql ppt_sql server p_sql server p_sql server p

    2. SQL Server详解:"sql_server_p"可能表示PPT会深入讨论SQL Server的特性,如事务处理、备份恢复、安全性、性能优化等。 3. SQL Server实践:"sql_server_ppt"可能意味着PPT包含了大量的实例,通过实际操作来教授...

    ORACLE_SQL性能优化

    【ORACLE SQL性能优化】是关于提升ORACLE数据库中SQL语句执行效率的专题,旨在帮助开发者理解SQL执行过程,掌握ORACLE优化器的工作原理,以及如何分析和优化SQL执行计划。以下是该主题涵盖的关键知识点: 1. **优化...

    SQLServer2008查询性能优化 2/2

    书名: SQLServer2008查询性能优化 作者: 弗里奇(Grant Fritchey) 出版社: 人民邮电出版社 出版日期: 2010年8月1日 ISBN: 9787115230294 编辑推荐 《SQL Server 2008查询性能优化》为你提供了处理查询性能所...

    oracle_sql性能优化

    总结,Oracle SQL性能优化是一个涉及多方面因素的过程,需要结合索引策略、SQL改写、数据库配置、并行处理等多个层面进行综合考虑。通过学习和实践,我们可以有效地提升Oracle数据库系统的运行效率。

    SQL Server 2000菜鸟进阶.rar_sql_sql 2000_sql server_sql server 2000_

    此外,安全性、备份恢复和性能优化也是SQL Server 2000管理的重要组成部分。 在SQL Server 2000的学习过程中,理解其架构、熟悉T-SQL语法、掌握企业管理器和查询分析器的使用、了解数据库设计原则,以及学习如何与...

    尚硅谷大数据技术之企业SQL面试题_大数据_sql_尚硅谷sql_doc_

    对于准备面试的人员,除了掌握SQL语法外,还需要理解大数据系统的工作原理,例如HDFS的存储模型、MapReduce或Spark的计算模型,以及如何设计高效的SQL查询以适应大数据的规模和性能需求。同时,熟悉数据库设计原则,...

    SQL Server性能优化视频.rar

    首先,理解查询优化是SQL Server性能优化的基础。这包括了编写高效的SQL语句,避免全表扫描,利用索引进行快速查找,以及合理使用JOIN操作。例如,通过创建和维护合适的索引,可以显著减少数据检索的时间。同时,...

    ado做的类sql查询分析器.rar_delphi ado 查询 分析_sql_数据查询分析_查询_查询分析器

    SQL查询分析是检查和优化查询性能的关键步骤。通过分析查询语句,可以识别出可能导致性能瓶颈的因素,如未优化的索引、不必要的JOIN操作、过度使用的子查询等。此查询分析器可能提供了查看执行计划、解析查询语法、...

Global site tag (gtag.js) - Google Analytics