你的位置:首页 > 软件开发 > 数据库 > SQL业务审核与优化

SQL业务审核与优化

发布时间:2016-07-22 22:00:25
审核 什么是业务审核类似与code review评审业务Schema和SQL设计偏重关注性能是业务优化的主要入口之一 审核提前发现问题,进行优化 上线后通过监控或巡检发现问题,进行优化 Schem ...

SQL业务审核与优化

审核 这个结果表示mysql优化器认为大概需要做1040个数据页的随机查找才能完成上面的查询。这是根据一系列的统计信息计算得来的:每个表或者索引的页面个数,索引的基数(索引中不同值的数量),索引和数据行的长度,索引分布情况。在查询中添加hint,提示优化器,如何用好关联子查询,很多时候,关联子查询也是一种非常合理,自然,甚至是性能最好的写法。会将actor中200条记录和customer中599条记录放在一个临时表中,然后在从临时表中取出前20条;  因为在first_name字段上没有索引,因此mysql将会进行一次全表扫描。可以使用内连接来绕过这个限制。实际上,这执行了两个查询:一个是子查询中的select语句,另一个是多表关联update,只是关联的表是一个临时表。 com_xxx表示每个xxx语句执行的次数:当然如果表 有分区,那么使用explain partition 可以找到select到底是在哪个分区查询的; 通过profile,我们能够更清楚地了解SQL执行的过程。通过show profile for query id ,分析具体的SQL;在获取到最消耗时间的线程状态后,mysql支持进一步选择all,cpu,block io ,context switch,page faults等明细类型来查看mysql在使用什么资源上耗费了过高的时间。show profile 能够在做SQL优化时帮助我们了解时间都耗费到哪里去了; 查看所有使用情况
  • Handler_read_key :值高,证明索引正在工作;值低,说明增加索引得到的性能改善不高,因为索引不经常使用
  • Handler_read_rnd_next:值高,意味着查询效率低,应该建立索引补救;
 本语句用于分析和存储表的关键字分布,分析的结果将可以使得系统得到准确的统计信息,是的SQL能够生成正确的执行计划。检查表的作用是检查一个或多个表是否有错误。将表中的空间碎片进行合并,并且可以消除由于删除或者更新造成的空间浪费;2 优化insert语句3 优化order by 语句
 mysql> alter table customer add index idx_email_storeid (email,store_id);Query OK, 0 rows affected (0.04 sec)Records: 0 Duplicates: 0 Warnings: 0 mysql> explain select store_id,email, customer_id from customer order by email\G;*************************** 1. row ***************************      id: 1 select_type: SIMPLE    table: customer     type: indexpossible_keys: NULL     key: idx_email_storeid   key_len: 154     ref: NULL     rows: 652    Extra: Using index1 row in set (0.00 sec)
可以看到,此时使用到了filesort 这种额外排序,这显然会增加开销;4  优化group by 语句 首先,让film_id使用索引,找到对应film_id,然后再回表找到对应description的数据列。这样,是延迟了列的访问,所以叫延迟关联;其实是分别找出对应列的数据行;之后从书签开始再找: 

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:SQL业务审核与优化

关键词:sql

sql
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。