当前位置: 首页 >数据库 > Mysql中查询优化

Mysql中查询优化

注意:

1、保证被驱动表的join字段已经被索引

 

2、left join 时,选择小表作为驱动表,大表作为被驱动表。

 

3、inner join 时,mysql会自己帮你把小结果集的表选为驱动表。

 

4、子查询尽量不要放在被驱动表,有可能使用不到索引。

 

5、能够直接多表关联的尽量直接关联,不用子查询。

 

子查询优化

尽量不要使用not in 或者 not exists

用left outer join  on  xxxis null 替代

排序分组优化

case

createindex idx_age_deptid_name on emp (age,deptid,name)

以下  是否能使用到索引能否去掉using filesort

 #无过滤不索引

 

#顺序错必排序


 #方向反必排序

 

ORDER BY子句,尽量使用Index方式排序,避免使用FileSort方式排序

 

索引的选择

 

eg:

 

#查询年龄为30岁的,且员工编号小于101000的用户,按用户名称排序

sELECT SQL_NO_CACHE * FROM emp WHERE age=30 AND empno <101000 ORDER BY NAME ;

执行案例前先清除emp上的索引,只留主键

 

索引的选择

 

group by 使用索引的原则几乎跟orderby一致 ,唯一区别是groupby 即使没有过滤条件用到索引,也可以直接使用索引。

 

 

 

 

 

 

 

 

 

 

作者:diligently
来源链接:https://www.cnblogs.com/luo12828-foxmail/p/16964113.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/database/118148.html

标签:group by
分享给朋友:

“Mysql中查询优化” 的相关文章

MySQL事务和锁 2022年05月16日 21:54:37
sql递归查询 2022年05月17日 21:40:33
利用Oracle分析函数row 2022年06月03日 23:42:05
mysql之基础查询 2022年06月06日 00:56:31
Mysql 查询结果赋值到变量 2022年06月07日 12:35:42
mysql查询各分区数据量大小 2022年06月10日 23:41:45
MySQL查询表中的数据是否存在 2022年06月13日 13:46:57
Mysql拼接查询结果 2022年06月15日 19:36:23