文档章节

mysql优化

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

精选30+云产品,助力企业轻松上云!>>>

一 查询的逻辑执行顺序

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
粉丝 18
博文 142
码字总数 154453
作品 0
南京
项目经理
私信 提问
加载中
请先登录后再评论。

暂无文章

生日悖论是啥?我用它省了上百G的内存

生日悖论: 是指在不少于 23 个人中至少有两人生日相同的概率大于 50%。例如在一个 30 人的小学班级中,存在两人生日相同的概率为 70%。对于 60 人的大班,这种概率要大于 99%。从引起逻辑矛盾...

osc_i2zebhtf
35分钟前
9
0
【蓝桥杯】2018年第九届蓝桥杯C/C++B组省赛——C题 承压计算

题目 标题:承压计算X星球的高科技实验室中整齐地堆放着某批珍贵金属原料。每块金属原料的外形、尺寸完全一致,但重量不同。金属材料被严格地堆放成金字塔形。 ...

osc_knx03fpr
37分钟前
14
0
node.js/npm升级正确操作(windows和linux均有)

原文地址:https://www.wjcms.net/archives/nodejsnpm升级正确操作windows和linux均有 今天我们总结一下node.js以及npm升级的正确操作方法。 小编亲身经历可以用以下几步解决node版本问题及跳...

osc_7ac8o6u9
39分钟前
7
0
使用IDEA实现SSM整合(Maven+Spring+Mybatis+SpringMvc)

我是阿福,公众号「阿福聊编程」作者,一个在后端技术路上摸盘滚打的程序员,在进阶的路上,共勉! 文章已收录在 JavaSharing 中,包含Java技术文章,面试指南,资源分享。 本文是基于Maven...

阿福聊编程
39分钟前
9
0
手把手教你使用Python抓取QQ音乐数据(第四弹)

【一、项目目标】 通过手把手教你使用Python抓取QQ音乐数据(第一弹)我们实现了获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名、专辑名、播放链接。 通过手把手教你使用Python抓取QQ音乐...

osc_9na1lmr9
40分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部