文档章节

MySQL——sql优化(二)

w
 waterme
发布于 2016/07/09 23:29
字数 499
阅读 3
收藏 0

一点记录:

offset优化:

原始语句:

mysql> explain SELECT rid, qid, status, source, deleted, uid, toUid, uname, content, misFlag, createTime, uip, opTime, opUid, likeCnt, opName, auditSt, applyTime, ext, likeCnt FROM tblArticleReply1 WHERE (qid = 2819559) ORDER BY rid ASC LIMIT 41 OFFSET 24920\G;
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: tblArticleReply1
         type: ref
possible_keys: qid,qid_likecnt
          key: qid
      key_len: 4
          ref: const
         rows: 52188
        Extra: Using where
1 row in set (0.00 sec)

测试环境中执行9s时间。。数据量大时很危险

优化:

mysql> explain SELECT t2.rid, qid, status, source, deleted, uid, toUid, uname, content, misFlag, createTime, uip, opTime, opUid, likeCnt, opName, auditSt, applyTime, ext, likeCnt  FROM tblArticleReply1 t2  join (select rid from tblArticleReply1  WHERE (qid = 2819559) ORDER BY rid ASC LIMIT 41 OFFSET 24920) t1 on t1.rid = t2.rid\G;
*************************** 1. row ***************************
           id: 1
  select_type: PRIMARY
        table: <derived2>
         type: ALL
possible_keys: NULL
          key: NULL
      key_len: NULL
          ref: NULL
         rows: 41
        Extra: 
*************************** 2. row ***************************
           id: 1
  select_type: PRIMARY
        table: t2
         type: eq_ref
possible_keys: idx_rid
          key: idx_rid
      key_len: 4
          ref: t1.rid
         rows: 1
        Extra: 
*************************** 3. row ***************************
           id: 2
  select_type: DERIVED
        table: tblArticleReply1
         type: ref
possible_keys: qid,qid_likecnt
          key: qid
      key_len: 4
          ref: 
         rows: 52188
        Extra: Using where; Using index
3 rows in set (0.01 sec)

这里使用了索引排序,现将查询结果集减少后再用小的结果集去连表。测试环境下执行时间0.02s,优化了不少啊!

索引排序:在mysql中索引本身就是排序好的,所以在第二条语句中只需要用where条件查询到rid,然后取出40条就行。

这里有一点需要注意:一定要用小结果集去join大结果集,否则就会有如下情况:

mysql> explain SELECT t2.rid, qid, status, source, deleted, uid, toUid, uname, content, misFlag, createTime, uip, opTime, opUid, likeCnt, opName, auditSt, applyTime, ext, likeCnt  FROM tblArticleReply1 t2 left join (select rid from tblArticleReply1  WHERE (qid = 2819559) ORDER BY rid ASC LIMIT 41 OFFSET 24920) t1 on t1.rid = t2.rid\G;
*************************** 1. row ***************************
           id: 1
  select_type: PRIMARY
        table: t2
         type: ALL
possible_keys: NULL
          key: NULL
      key_len: NULL
          ref: NULL
         rows: 38251327
        Extra: 
*************************** 2. row ***************************
           id: 1
  select_type: PRIMARY
        table: <derived2>
         type: ALL
possible_keys: NULL
          key: NULL
      key_len: NULL
          ref: NULL
         rows: 41
        Extra: 
*************************** 3. row ***************************
           id: 2
  select_type: DERIVED
        table: tblArticleReply1
         type: ref
possible_keys: qid,qid_likecnt
          key: qid
      key_len: 4
          ref: 
         rows: 52188
        Extra: Using where; Using index
3 rows in set (0.01 sec)

可以看出扫描行数很多且没有使用索引。。测试环境中没跑出来。。

本文转载自:http://blog.csdn.net/feihongxueni/article/details/51730665

共有 人打赏支持
w
粉丝 0
博文 27
码字总数 0
作品 0
海淀
私信 提问
Mysql 多表联合查询效率分析及优化

多表连接类型 1. 笛卡尔积(交叉连接) 在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用',' 如: [sql]view plaincopyprint? SELECT * FROM table1 CROSS JOIN table2 SELECT * FROM...

蓝狐乐队
2014/04/30
0
0
GROUP BY另类优化技巧

分享嘉宾:知数堂〖SQL开发优化班〗讲师郑松华,韩国Infobridge的SQL优化专家&7年SQL开发和调优经验&资深数据库工程师。 本次主题《GROUP BY另类优化技巧》,主要内容是从 GROUP BY、ORDER B...

iMySQL | 老叶茶馆
2017/04/15
0
0
mysql性能优化-慢查询分析、优化索引和配置

目录 一、优化概述 二、查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询 2索引及查询优化 三、配置优化 1) max_connections 2) back_log 3) inte...

zyt_1978
2016/09/18
40
0
mysql性能优化-慢查询分析、优化索引和配置

目录 一、优化概述 二、查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询 2索引及查询优化 三、配置优化 1) max_connections 2) back_log 3) inte...

蓝狐乐队
2014/07/11
0
0
热门又高薪的大数据技术,怎么上车,前景如何?

IT江湖百晓生 主讲嘉宾:王晓伟微信号:goodwxw 萌萌哒 ^_^ 大牛背景: 本科:计算机学院-大连海事大学 硕士:软件工程硕士(MSE) -软件学院-清华大学 职场经历: 系统工程师-畅游 Hadoop工...

n88lpo
2017/11/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Dubbo分析之Cluster层

系列文章 Dubbo分析Serialize层 Dubbo分析之Transport层 Dubbo分析之Exchange 层 Dubbo分析之Protocol层 前言 紧接上文Dubbo分析之Protocol层,本文继续分析dubbo的cluster层,此层封装多个提...

ksfzhaohui
17分钟前
0
0
linux Ubuntu 安装 hyperledger fabric

一、apt-get update 二、安装docker sudo apt-get install docker.io 如果安装报错:E: Unable to locate package,请执行第一条。 # docker -v Docker version 1.6.2, build 7c8fca2 # dock......

八戒八戒八戒
20分钟前
1
0
神经网络基础及Keras入门

神经网络定义 人工神经网络,简称神经网络,在机器学习和认知科学领域,是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型,用于对函数进行估计或...

Python女神
21分钟前
1
0
Pycharm上Django的使用 Day9

编辑条目: 1.创建edit_entry的URL模式 形参entry_id存储在URL中传递的ID,这个URL模式将预期匹配的请求发送给视图函数edit_entry() 2.编写视图函数edit_entry() 1处获取用户要修改的条目对象...

不会TC的猫
21分钟前
1
0
夹点getGripPoints/捕捉点getOsnapPoints

已知圆外一点,以及圆心半径,求圆的切点: 方法1: (b-y/a-x)*(n-y/m-x)=-1(a-x)平方+(b-y)平方=r平方联立方程组求解 方法1: CPoint CalcQieDian(CPoint ptCenter, CPoint ptOutside, do...

一个小妞
33分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部