为了账号安全,请及时绑定邮箱和手机立即绑定
  • 慢查日志格式: (1)执行时间 # Time: 150526 13:56:20 (2)用户主机信息 # User@Host: root[root] @ localhost [] (3)执行信息(如:执行时间、锁定时间、发送行数、扫描行数) # Query_time: 0.000282 Lock_time: 0.000094 Rows_sent: 2 Rows_examined: 2 (3)SQL执行时间 SET timestamp=1432619780; (4)SQL的内容 select * from store;
    查看全部
  • 开启MySQL慢查询日志
    查看全部
  • 前台使用分表后的数据进行选择查询,后台通过汇总表进行数据统计
    查看全部
  • 表的垂直拆分的原则 所谓垂直拆分,就是把原来一个有很多列的表拆分成多个表解决表的宽度问题,通常拆分原则如下: 1、把不常用的字段单独存放到一个表中 2、把大字段独立存放到一个表中 3、把经常一起使用的字段放到一起
    查看全部
  • 操作系统配置优化: 1. 网络方面,修改/etc/sysctl.conf文件,增加tcp支持的队列数,减少断开连接时,资源的回收。 2. 打开文件数的限制。修改/etc/security/limits.conf文件,增加一下内容以修改打开文件数量的限制。 关闭iptables,selinux等防火墙软件。
    查看全部
  • 表的水平拆分 为了解决单表数据量过大的问题,每个水平拆分表的结构完全一致 方法 1.对id进行hash运算,可以取mod 挑战 1.跨分区进行数据查询 2。统计及后台报表操作
    查看全部
  • 垂直拆分 把原来有很多列的表拆分成多个表,原则是: 1.把不常用的字段单独存放到一个表中 2.把大字段独立存放在一个表中 3.把经常使用的字段放在一起
    查看全部
  • 反范式化:为了查询效率的考虑,把原本符合第三范式的表适当增加冗余,以达到优化查询效率的目的。以空间换取时间的操作。
    查看全部
  • 数据表结构优化 第三范式:要求数据库中不存在非关键字段对任意候选关键字的传递函数依赖 不符合第三范式要求的表存在以下问题: 1.数据冗余:(分类、分类描述)对于每一个商品都会进行记录 2.数据插入异常 3.数据更新异常 4.数据删除异常
    查看全部
  • 选择合适的数据类型 1.使用可存下数据的最小的数据类型 2.使用简单地数据类型,Int<varchar 3.尽可能使用not null定义字段 4.尽量少用text,非用不可最好分表 用Int存储日期时间 from_unixtime()可将Int类型的时间戳转换为时间格式 unix_timestamp()可将时间格式转换为Int类型 存储IP地址——bigInt 利用inet_aton(),inet_ntoa()转换
    查看全部
  • 删除不用索引(通过慢查日志进行索引使用情况分析)
    查看全部
  • 过多的索引不但影响写入,而且影响查询,索引越多,分析越慢 如何找到重复和多余的索引,主键已经是索引了,所以primay key 的主键不用再设置unique唯一索引了 冗余索引,是指多个索引的前缀列相同,innodb会在每个索引后面自动加上主键信息 冗余索引查询工具 pt-duplicate-key-checker
    查看全部
  • 选择合适的索引列 1.在where,group by,order by,on从句中出现的列 2.索引字段越小越好(因为数据库的存储单位是页,一页中能存下的数据越多越好 ) 3.离散度大得列放在联合索引前面 select count(distinct customer_id), count(distinct staff_id) from payment; 查看离散度 通过统计不同的列值来实现 count越大 离散程度越高
    查看全部
  • limit常用于分页处理,时常会伴随order by从句使用,因此大多时候会使用Filesorts这样会造成大量的io问题 1.使用有索引的列或主键进行order by操作 2.记录上次返回的主键,在下次查询时使用主键过滤 使用这种方式有一个限制,就是主键一定要顺序排序和连续的,如果主键出现空缺可能会导致最终页面上显示的列表不足5条,解决办法是附加一列,保证这一列是自增的并增加索引就可以了
    查看全部
  • group by可能会出现临时表(Using temporary),文件排序(Using filesort)等,影响效率。 可以通过关联的子查询,来避免产生临时表和文件排序,可以节省io 改写前 select actor.first_name,actor.last_name,count(*) from sakila.film_actor inner join sakila.actor using(actor_id) group by film_actor.actor_id; 改写后 select actor.first_name,actor.last_name,c.cnt from sakila.actor inner join( select actor_id,count(*) as cnt from sakila.film_actor group by actor_id )as c using(actor_id);
    查看全部
    0 采集 收起 来源:group by的优化

    2015-05-25

举报

0/150
提交
取消
课程须知
想要学好这门课程,你需要具备MySQL数据库的基本知识,如果具有相关的工作经验并且希望能提升工作技能的话,这门课程就再适合不过了。
老师告诉你能学到什么?
1、了解数据库优化的各个方面的方法和技巧 2、如何对SQL语句和索引进行优化 3、如何对数据库结构及运行环境进行优化

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!