![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SQL优化
风度玉门
人得先清心寡欲,方能高枕无忧。
展开
-
SQL优化--逻辑优化--视图重写与等价谓词重写
1)视图重写视图的类型:a)用SPJ格式构造的视图,称为简单视图。CREATE VIEW v1 AS SELECT x, y, z FROM t;b)用非SPJ格式构造的视图(带有GROUPBY等操作),称为复杂视图。CREATE VIEW v2 AS SELECT x, y, z FROM t ORDER BY x;视图重写:原创 2015-02-07 16:35:05 · 2215 阅读 · 0 评论 -
SQL优化--物理优化--表扫描与连接算法
1)概述①物理优化主要解决的问题a)从可选的单表扫描方式中,挑选什么样的单表扫描方式是最优的?b)两个表做连接时,如何连接是最优的?c)多个表连接,连接顺序有多种组合,哪种连接顺序是最优的?d)多个表连接,连接顺序有多种组合,是否要对每种组合都探索?如果不全部探索,怎么找到最优的一种组合?②物理优化概念物理查询优化把逻辑查询执行计划变为物理操作符,供执行器执行。原创 2015-05-13 23:40:02 · 973 阅读 · 0 评论 -
SQL优化--查询优化技术分类
数据库调优的方式通常有如下几种:1)人工调优。主要依赖于人,效率低下;要求操作者完全理解常识所依赖的原理,还需要对应用、数据库管理系统、操作系统以及硬件有广泛而深刻的理解。2)基于案例的调优。总结典型应用案例情况中数据库参数的推荐配置值、数据逻辑层设计等情况,从而为用户的调优工作提供一定的参考和借鉴。但这种方式忽略了系统的动态性和不同系统间存在的差异。3)自调优。为数据原创 2015-02-07 12:50:11 · 2366 阅读 · 0 评论 -
SQL优化--逻辑优化--子查询优化(MySQL)
1)子查询概念:当一个查询是另一个查询的子部分时,称之为子查询(查询语句中嵌套有查询语句)。子查询出现的位置有:a)目标列位置:子查询如果位于目标列,则只能是标量子查询,否则数据库可能返回类似“错误: 子查询必须只能返回一个字段”的提示。b)FROM子句位置:相关子查询出现在FROM子句中,数据库可能返回类似“在FROM子句中的子查询无法参考相同查询级别中的关系”原创 2015-02-07 15:04:58 · 2254 阅读 · 0 评论 -
SQL优化--逻辑优化--条件化简
1)查询条件查询条件概念:SQL查询语句中,对元组进行过滤和连接的表达式,形式上是出现在WHERE/JOIN-ON/HAVING的子句中的表达式。2)条件化简技术①条件下推:把与单个表相关的条件,放到对单表进行扫描的过程中执行。SELECT * FROM A, BWHERE A.a=1 and A.b=B.b;原创 2015-02-13 10:56:13 · 2538 阅读 · 0 评论 -
SQL优化--逻辑优化--外连接、嵌套连接与连接消除
1)外连接消除①外连接简介1)LEFT JOIN / LEFT OUTER JOIN:左外连接 左向外连接的结果集包括:LEFT OUTER子句中指定的左表的所有行,而不仅仅是连接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。 2)RIGHT JOIN / RIGHT原创 2015-02-13 14:43:18 · 2789 阅读 · 0 评论 -
SQL优化--逻辑优化--数据库的约束规则与语义优化
1)数据库完整性①实体完整性(Entity Integrity):自己a)一个关系对应现实世界中一个实体集。--ER模型b)现实世界中的实体具有某种惟一性标识。--主键c)主关键字是多个属性的组合,则所有主属性均不得取空值。--隐含的索引②域完整性(Domain Integrity): 自己的局部保证数原创 2015-02-13 15:27:41 · 1199 阅读 · 0 评论 -
SQL优化--逻辑优化--非SPJ优化
1)GROUP BY分组转换(MySQL不支持)①分组操作下移GROUPBY 操作可能较大幅度减小关系元组的个数,如果能够对某个关系先进行分组操作,然后再进行表之间的连接,很可能提高连接效率。这种优化方式是把分组操作提前执行。下移的含义,是在查询树上,让分组操作尽量靠近叶子结点,使得分组操作的结点低于一些选择操作。②分组操作上移如果连接操作能够过滤掉原创 2015-02-13 16:12:04 · 1453 阅读 · 1 评论