文档章节

mysql优化

ericSM
 ericSM
发布于 2016/07/07 16:40
字数 518
阅读 25
收藏 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
粉丝 17
博文 116
码字总数 92169
作品 0
南京
项目经理
私信 提问

暂无文章

数据集可视化---张量场的可视表示

中国龙-扬科
1分钟前
0
0
JavaScript创建对象方法实例小结

本文实例讲述了JavaScript创建对象方法。分享给大家供大家参考,具体如下: 最简单的方式就是创建一个Object对象,并为其添加属性和方法。 //示例代码var person=new Object()person.name=...

peakedness丶
3分钟前
0
0
GO 读写锁实现原理剖析

前言 TODO:简单说明读写锁用法及规则。 读写锁数据结构 类型定义 TODO: 源码中数据结构 TODO:讲解每个成员作用 写锁阻止写锁 TODO:描述两个尝试写是如何避免的 写锁阻止读锁 TODO:描述获...

恋恋美食
7分钟前
0
0
Java核心(二)深入理解线程池ThreadPool

本文你将获得以下信息: 线程池源码解读 线程池执行流程分析 带返回值的线程池实现 延迟线程池实现 为了方便读者理解,本文会由浅入深,先从线程池的使用开始再延伸到源码解读和源码分析等高...

王磊的博客
9分钟前
1
0
web项目中的乱码问题原理分析

Java web开发过程经常遇到乱码,本篇我们探讨一下乱码产生的原因与解决思路。 一次完整的Web请求会有4次编解码转换,如下所示。 第一次:客户端(通常为浏览器)将字符转换成TCP字节流发向服...

fame_yao
13分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部