【MySQL】基于MySQL的SQL优化(二)——对count()、max()的优化
*本文章使用数据均来自MySQL样本数据库Sakila,参考:https://blog.csdn.net/tanglei6636/article/details/93042010
max():
- 通过一条含有max()的语句来了解一下通过索引来优化带有max()方法的SQL语句。
- SELECT MAX(payment_date) FROM payment;
用explain关键字分析得出:这是一个简单的(SIMPLE)查询,type是最差的类型ALL全表扫描,虽然执行时间很短,但是还是有很大的提升空间。
优化方法:创建索引在相应的列上 CREATE INDEX idx_payment_date ON payment(payment_date);
会直接在Extra上显示“select tables optimized away(选择的表已被优化)”。
count():
用一条用于查询2006年以及2007年电影数量的SQL语句来了解一下有关count()的优化。
SELECT COUNT(release_year='2006' OR NULL) AS '2006',COUNT(release_year='2007' OR NULL) AS '2007' FROM film;
优化方法:count()与count(COL)的区别,count()在统计时会统计上空值(NULL),但是count(COL)则不会。所以要灵活运用count的这个特性,来实现相应的查询。
但是从性能上来说:count()是什么意思?事实上,它真正的含义是找一个占用空间最小的索引字段,然后对它进行记数,不要一看到就认为“大”,在count命令中,它指的是“任意一个“。
对于一个大表来说,如果你的字段有bit类型,如性别字段,表示真假关系的字段,我们需要为它加上索引,加上之后,我们的count速度就会快很多。
- 任何情况下 SELECT COUNT(*) FROM tablename; 是最优选择;
- 尽量减少SELECT COUNT(*) FROM tablename WHERE COL = value; 这种查询;
- 杜绝SELECT COUNT(COL) FROM tablename 后面跟各种WHERE条件的出现。
【MySQL】基于MySQL的SQL优化(二)——对count()、max()的优化相关推荐
- MySQL性能管理及架构设计(二):数据库结构优化、高可用架构设计、数据库索引优化...
一.数据库结构优化(非常重要) 1.1 数据库结构优化目的 1.减少数据冗余:(数据冗余是指在数据库中存在相同的数据,或者某些数据可以由其他数据计算得到),注意,尽量减少不代表完全避免数据冗余: 2. ...
- SQL学习(二)——SELECT COUNT GROUP BY HAVING
原则 书写顺序 select->from->where->group by -> having ->order by 执行顺序 From->where->gr ...
- 【MySQL】MySQL开发注意事项与SQL性能优化步骤
MySQL简介 地表最流行数据库 名副其实 什么是MySQL? 世界上应用最广泛且灵活的开源关系数据库 MySQL 是应用最广泛的开源关系数据库,是许多常见网站,应用程序和商业产品使用的主要关系数据存 ...
- 超详细图解!【MySQL进阶篇】SQL优化-索引-存储引擎
1. Mysql的体系结构概览 整个MySQL Server由以下组成 Connection Pool : 连接池组件 Management Services & Utilities : 管理 ...
- Mysql面试题,sql优化,存储引擎,数据结构,基础知识等
目录 一.相关知识 什么是MySQL?SQL是什么? SQL的生命周期? 什么是超键.候选键.主键.外键? 数据库有哪几个范式,谈谈理解? MySQL的binlog有有几种录入格式?分别有什么区别? ...
- linux mysql 邮件_linux 下 搭建邮件邮件服务器(Postfix+Dovecot)(二)-基于mysql的虚拟账户登陆收发邮件...
linux 下 搭建邮件邮件服务器(Postfix+Dovecot)(二)-基于mysql的虚拟账户登陆收发邮件 使用虚拟用户收发邮件安装 九.安装Courier authentication lib ...
- linux 下 搭建邮件邮件服务器(Postfix+Dovecot)(二)-基于mysql的虚拟账户登陆收发邮件...
linux 下 搭建邮件邮件服务器(Postfix+Dovecot)(二)-基于mysql的虚拟账户登陆收发邮件 使用虚拟用户收发邮件安装 九.安装Courier authentication lib ...
- mysql 执行计划extra_SQL优化 MySQL版 -分析explain SQL执行计划与Extra
Extra 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 注:此文章必须有一定的Mysql基础,或观看执行计划入门篇传送门: https://www.cnblogs.com/Sta ...
- MySQL高级篇(SQL优化、索引优化、锁机制、主从复制)
目录 0 存储引擎介绍 1 SQL性能分析 2 常见通用的JOIN查询 SQL执行加载顺序 七种JOIN写法 3 索引介绍 3.1 索引是什么 3.2 索引优劣势 3.3 索引分类和建索引命令语句 3 ...
最新文章
- 怎样训练YOLOv3
- 本机发邮件测试mail函数
- Elasticsearch2.x Cluster Health
- openCV4.2.0 error: (-5:Bad argument) CAP_IMAGES: can’t find starting number (in the name of file)
- php输出多维json,json多维数组怎么利用php进行构造
- 初学者的编程自学指南
- 现代制造工程课堂笔记07——应力应变分析(考点应力莫尔圆)
- Python3.6学习笔记(四)
- android p正式版,国内首家!一加正式推送Android P正式版
- c语言 指正判断字符串大小
- 这个 Python 代码自动补全神器搞得我卧槽卧槽的
- 【伙伴故事】一盏智能灯,点亮家庭和工业照明的新未来
- 万字图解Java多线程,不信你学不会!
- python文本分割_python实现大文本文件分割
- 安卓客户端使用矢量图
- STM32F103C8T6 红外测距模块测量距离(SHARP GP2Y0A21YK0F)使用CubeMx生成HAL库(ADC)
- python控制雷电模拟器
- 一些名人语录(不断添加中...)
- 首届中国餐饮行业资本品牌创新发展(盐城)论坛圆满举办成功
- flink 的用途 场景