标签墙

MySQL

MySQL 慢查询优化

 

建立索引的五大原则 最左前缀匹配原则。 “=” 和 “in” 可以乱序。 尽量选择区分度高的列作为索引。 索引列不能参与计算。 尽量扩展索引,不要新建索引。 查询优化神器 - explain命令 慢查询优化基本步骤 先运行看看是否真的很慢,注意设置 SQL_NO_CACHE where条件单表查,锁定最小返回记录表。这句话的意思是把查询语句的where都应用到表中返回的记录数最小的表开始查起,单表每个字段分别查询,看哪个字段的区分度最高 explain查看执行计划,是否与1预期一致(从锁定记录较少的表开始查询) order by limit 形式的 sql 语句让排序的表优先查 了解业务方使用场景 加索引时参照建索引的几大原则 观察结果,不符合预期继续从0分析

More...

MySQL 按天、星期、按月数据统计 SQL 集合 (转)

  ,

数据统计的需求做过多次,每次都要重新搜索,为了提高查找效率,索性做个记录。内容在原文的基础之上稍有改动。 准备工作 为了测试方便,先创建一个测试表,在插入两条数据(注:时间为 datetime` 类型,Unix 时间戳需要转换) 创建表 create table if not exists t ( id int, addTime datetime default '0000-00-00 00:00:00' ); 添加两条初始数据: insert t values(1, '2017-03-12 02:00:00'); insert t values(2, '2017-03-22 02:00:00'); 开始 统计当天(当日)的数据: 常规写法(对比判断): SELECT count(*) FROM t WHERE DATE_FORMAT(addTime, '%Y-%m-%d') = date_format(now(),'%Y-%m-%d')); 常规写法的简化: SELECT * FROM t WHERE addTime >= date_format(NO....

More...