以为使用 MySQL 是非常的简单的,无非都是照着 【select from where group by order by】 这个格式套来套去;从来不会关注 SQL 的耗费时长,更不会关注查询的性能。但是当用户量上来了,表数据不断暴增,导致我们以前写的 SQL 的查询时间越来越长,最后还被 DBA 和领导疯狂吐槽一波。那么,此时我们是不是应该学习一下如何去优化我们的烂 SQL 呢?下面,我将从多
1、对查询进行优化,应尽量避免全表扫描,首先应考虑在 WHERE 及 ORDER BY 涉及的列上建立索引。 2、应尽量避免在 WHERE 子句中对字段进行 NULL 值判断,创建表时 NULL 是默认值,但大多数时候应该使用 NOT NULL,或者使用一个特殊的值,如 0,-1 作为默认值。 3、应尽量避免在 WHERE 子句中使用 != 或 操作符。MySQL 只有对以下操作符才使用索引:=,
保证给你讲明白,看不懂你砍我。 首先弄明白两个概念-大概说一下,具体的网上都有: 覆盖索引 - select b,c,d from t1 ; select b,c,d from t1 where b=1 and c =1 and d=1 ; select a,b,c,d from t1 where b=1 an
案例 取所有不为掌门人的员工,按年龄分组! select age as '年龄', count(*) as '人数' from t_emp where id not in (select ceo from t_dept where ceo is not null) group by age; 如何优化? ①解决dept表的全表扫
例如查询昨日新注册用户,写法有如下两种: EXPLAINselect from chess_user u where DATE_FORMAT(u.register_time,'%Y-%m-%d')='2018-01-25';EXPLAINselect from chess_user u where u.register_time BETWEEN '2018-01-25 00:00:00' <