高性能可扩展mysql(执行计划,索引分析优化改写,删除重复数据,区间统计,满查询日志)
来源:互联网 发布:mac os官方下载 编辑:程序博客网 时间:2024/06/02 04:14
需求:对评论进行分页展示(利用执行计划优化查询)
explain执行计划sql分析
- select
- update
- insert
- replace
- delete
SELECT customer_id,title,content FROM `product_comment` HWERE audit_status = 1 AND product_id = 199726 LIMIT 0,5;
- 结果(检查是否正确执行索引)
- SQL如何使用索引
- 关联查询的执行顺序(mysql优化器根据索引的信息,自动的调整索引的顺序)
- 查询扫描的数据行数
ID列
查询一组分类下商品的标题
查询最小分类的ID对应最大商品ID的一个评论标题(3个select语句)
查询每个一级分类最大的商品ID对应评论的标题信息
SELECT_TYPE列
UNION RESUT时,ID值为null.
DERIVED 衍生表,用来表示包涵在FROM字句中的字查询。myslq递归的执行,并将结果放在临死表中,临时表就是派生表。
TABLE列,执行计划中的数据是由哪个表输出的。
PARTITIONS列,查询分区表
如果不按照分区键选择,就会显示全部的分区,因为是跨分区扫描
- 对于分区表,显示查询的分区ID
- 对于非分区表,显示为NULL
TYPE列,查询中使用的一个类型(mysql访问数据的方式)
Extra列(扩展列,包涵mysql如何执行查询的一些附加信息)
POSSIBLE_KEYS列
KEY列
KEY_LEN列
Ref列(当前表在利用key列中的索引进行查询时,所用到的列或者常量)
Rows列
Filtered列
执行计划的限制
优化评论分页查询(添加索引)
>使用情况:中间结果集差距很小的情况,或者数据量很小的情况
首先,我们可以考虑对where条件添加索引,就是audit_status 和 product_id添加一个联合索引
问题:audit_status 和 product_id哪个放在最左侧
根据索引设计规范,先计算一下这两列在表中的区分度
数据越接近1,区分度越高
缺点:越往后翻页,查询效率越来越差,时间也越来越长,尤其数据量很大
sql进一步优化:改写
数据库访问开销=索引IO+索引全部记录结果对应表数据的IO
数据库访问开销=索引IO+索引返回15条记录对应表数据的IO
IO节约很多
在任意位置翻页的消耗都是相同的
使用情况:中间结果集差距很大的情况,或者ORDER BY,WHERE有对应的覆盖索引
该SQL使用前提:comment_id是主键,而且有覆盖索引(product_id和audit_status联合索引)
需求:删除重复数据
测试查询数据
第二步CREATE TABLE bak_product_comment_161022 LIKE product_comment;INSERT INTO bak_product_comment_161022 SELECT * FROM product_comment;或者CREATE TABLE bak_product_comment_161022 AS SELECT * FROM product_comment;
删除
子查询:查询出所有商品中订单的重复评论的最小评论ID(要保留,最早的)
关联商品评论表,删除,相同订单,相同商品,大的评论ID
需求:分区间统计
根据订单主表(order_master)查询出所有用户消费总金额
关联登陆日志表和订单主表
CASE区间分隔
COUNT 用户量统计
验证
需求:捕获有问题的SQL-慢查日志
快速分析慢查询日志-mysqldumpslow
- 高性能可扩展mysql(执行计划,索引分析优化改写,删除重复数据,区间统计,满查询日志)
- 优化 SQL Server 查询性能----分析执行计划,索引与索引视图,如何识别要优化的查询
- 优化 SQL Server 查询性能----分析执行计划,索引与索引视图,如何识别要优化的查询
- 高性能mysql(2)索引性能优化和查询优化
- mysql(十一)索引、limit分页、执行计划、慢日志查询
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- mysql性能优化-慢查询分析、优化索引和配置
- 牛客网剑指offer-在二维数组中的查找
- 7.18学习bootstrap之路!
- MySQL登陆的相关命令
- 【PAT】【Advanced Level】1026. Table Tennis (30)
- FZU Problem 2271 X(最短路)
- 高性能可扩展mysql(执行计划,索引分析优化改写,删除重复数据,区间统计,满查询日志)
- 三分法
- [Android] AudioEffect架构:从上层调用到底层音效驱动
- TensorFlow手写识别
- SPOJ687 Repeats (后缀数组+lcp)
- MathJax基础(2):矩阵
- Realm基础
- php和java之间aes加密的互通
- CCF201312-1 出现次数最多的数 桶排序