为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
性能优化之MySQL优化_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

性能优化之MySQL优化

sqlercn 数据库工程师
难度中级
时长 2小时 0分
  • 通过统计信息库information_schma查找一些重复冗余的索引,1.通过查询统计信息表,2.通过拿用第三方的统计工具pt-duplicate-key-checker(用户名,密码,数据库服务器ip),会给出一些优化建议. 如果因为业务变更一些索引已经未使用Mysql当前只能使用慢查询日志配合pt-index-usage来进行index使用分析(如果数据库集群是主从结构的我们需要收集所有的主从慢查询日志). 但在perconMysql和mariaDB中可以通过INDEX_STATISTICS表来查询。
    查看全部
  • 索引字段越小越好,离散程度越大越好!联合索引的前导列一般是离散程度越大越好!
    查看全部
  • 使用limit查询时,尽量利用索引减少表扫描的数量。
    查看全部
  • 如果涉及到表联接的过程中有group by这样的语句,可以先通过group by做为子查询,统计出结果后,再与其它表进行关联查询。
    查看全部
    1 采集 收起 来源:group by的优化

    2016-12-11

  • 子查询一般优化成join的查询方式,同时需考虑关联键是否存在一对多的关系 如果存在一对多的关系,则可以使用distinct关键字去重.
    查看全部
    0 采集 收起 来源:子查询的优化

    2016-12-11

  • count(列)如果中间有NULL值,count是不会统计数量的,而count(*)是包含了Null 值。如果指定了查询某个具体的范围或值的话,尽量不使用group by分组统计.
    查看全部
  • explain:从句,如果extra列的返回值为Using filesort或Using temporary则查询需要优化,一般都出现在ORDER BY 或是GROUP BY上.
    查看全部
  • pt-query-digest分析慢查询日志文件比mysqldumpslow更丰富: 1.显示日志的时间范围,以及总的sql数量.2.表的统计信息sql响应时间和执行次数。3.具体的sql 解决: 1.查询时间长,查询次数多 2.IO大的sql,分析Rows Examine项,扫描的行数 3.未命中索引的sql,分析Rows Examine与Rows send发送的行数的对比
    查看全部
  • 最小的数据类型 使用简单数据类型,int比varchar类型在mysql处理上简单 尽可能使用not null 定义字段,设置默认值 尽量少用text类型 使用int类型存储日期 使用from_unixtime()将int类型转换为日期 使用unix_timestamp()将日期转换为int
    查看全部
  • 离散程度的大小的判定方法: 计算出数据库中记录不重复数量 select count(distinct row1),count(distinct row2) from table; count()值大的就离散度高。
    查看全部
  • 在where从句,group by从句,order by从句,on从句中出现的列建立索引 索引字段越小越好 离散度大的列放在联合索引的前面
    查看全部
  • mysql
    查看全部
  • 这个例子中,可以把 explain select actor.first_name,actor.last_name,count(*) from film_actor inner join actor on actor.actor_id = film_actor.actor_id group by actor.actor_id\G 改写为 explain select actor.first_name,actor.last_name,c.cnt from actor inner join (select actor_id,count(*) AS cnt from film_actor GROUP BY actor_id) AS c USING(actor_id)\G
    查看全部
    3 采集 收起 来源:group by的优化

    2016-12-07

  • 使用join连接时,from table1 join table2 on table1.tid = table2.tid 可以改写为from table1 join table2 USING(tid)。UISNG()中的列名在两表中必须存在~
    查看全部
    0 采集 收起 来源:group by的优化

    2016-12-07

  • select count(year='2006' or null) as xx from tablename; 后面的or null会把为null的值跳过,不计入数量中。 这是利用了select count(col_name)的特点,指定列不为空的行数; select count(*) 为所有行数。
    查看全部

举报

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

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