文档章节

mysql优化

ericSM
 ericSM
发布于 2016/07/07 16:40
字数 518
阅读 26
收藏 5

一 查询的逻辑执行顺序

FROM < left_table>

< join_type>  JOIN < right_table>   ON < join_condition>

WHERE < where_condition>

GROUP BY < group_by_list>

WITH {cube | rollup}

HAVING < having_condition>

SELECT   DISTINCT < top_specification>  < select_list>

ORDER BY < order_by_list>

LIMIT <offset> <length>

二 执行顺序

1.FROM:对FROM子句中前两个表执行笛卡尔积生成虚拟表vt1

2.ON:对vt1表应用ON筛选器只有满足< join_condition> 为真的行才被插入vt2

3.OUTER(join):如果指定了 OUTER JOIN保留表(preserved table)中未找到的行将行作为外部行添加到vt2 生成t3如果from包含两个以上表则对上一个联结生成的结果表和下一个表重复执行步骤和步骤直接结束

4.WHERE:对vt3应用 WHERE 筛选器只有使< where_condition> 为true的行才被插入vt4

5.GROUP BY:按GROUP BY子句中的列列表对vt4中的行分组生成vt5

6.CUBE|ROLLUP:把超组(supergroups)插入vt6 生成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.LIMIT:从vc10的开始处选择指定位置,指定数量的行生成vt11 并返回调用者

性能与团队开发必守规范

1.不要写SELECT * 的语句,而是选择你需要的字段

2.连接多表时, 每个Column上使用表的别名.就可以减少解析的时间并减少那些由Column歧义引起的语法错误和方便团队维护。

如有表table1(ID,col1)和table2 (ID,col2)

Select A.ID, A.col1, B.col2

— Select A.ID, col1, col2 –不要这么写,不利于将来程序扩展

from table1 A inner join table2 B on A.ID=B.ID Where …

3.合理写WHERE子句,不要写没有WHERE的SQL语句,

 正在显示第 0 - 24 行 (共 11755 行, 查询花费 0.0002 秒。)

SELECT * FROM `ent_****_datacenter_field_metadata` WHERE 1

稳定,速度快

4.NOT IN、NOT EXISTS的相关子查询可以改用LEFT JOIN代替写法

 

 

© 著作权归作者所有

共有 人打赏支持
ericSM
粉丝 16
博文 116
码字总数 92169
作品 0
南京
项目经理
私信 提问

暂无文章

redis高级进阶(2)

本篇主要介绍如下内容 1.redis服务器数据库 2.redis对过期键的处理 3.redis持久化策略 1.redis服务器数据库 redis服务器如果不指定数据库的具体数据,默认是16个数据库。 客户端连接到redis...

求是科技
6分钟前
0
0
js时间Date对象介绍及解决getTime转换为8点的问题

前言   在做时间转换的时候,发现用“2016-04-12”转出来的时间戳是 2016-04-12 08:00的时间点,而不是0点。 new Date('2016-04-12').getTime();// 1460419200000 new Date(1460419...

Jack088
15分钟前
1
0
Dubbo 实践,演进及未来规划

Dubbo 整体介绍 Dubbo 是一款高性能,轻量级的 Java RPC 框架。虽然它是以 Java 语言来出名的,但是现在我们生态里面已经有 Go、Python、PHP、Node.JS 等等语言。 Dubbo 是一个 RPC 框架,它...

微笑向暖wx
15分钟前
0
0
用Python建立最简单的web服务器

前提:已装好python,mac默认已有 参考:https://www.cnblogs.com/xuxn/archive/2011/02/14/build-simple-web-server-with-python.html 利用Python自带的包可以建立简单的web服务器。在DOS里...

Liens
17分钟前
0
0
MaxCompute安全管理指南-基础篇

背景及目的 方便和辅助MaxCompute的project owner或安全管理员进行project的日常安全运维,保障数据安全。 MaxCompute有安全模型,DataWorks也有安全模型,当通过DataWorks使用MaxCompute,而...

阿里云官方博客
26分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部