今天数据库负载就直线上升,数据库连接数撑爆。把语句抓出来一看,罪魁祸首是一条很简单的语句:SELECT * FROM eload_promotion_code WHERE 1 AND exp_time<1478782591 AND cishu=0 order by id desc limit 454660,20; 二话不说先把这个语句kill了,然后慢慢看怎么优化。

先看一下这个表的索引:

>show index from eload_promotion_code\G

*************************** 1. row ***************************

Table: eload_promotion_code

Non_unique: 0

Key_name: PRIMARY

Seq_in_index: 1

Column_name: id

Collation: A

Cardinality: 921642

Sub_part: NULL

Packed: NULL

Null:

Index_type: BTREE

Comment:

Index_comment:

*************************** 2. row ***************************

Table: eload_promotion_code

Non_unique: 1

Key_name: idx_cishu_exp

Seq_in_index: 1

Column_name: cishu

Collation: A

Cardinality: 15

Sub_part: NULL

Packed: NULL

Null:

Index_type: BTREE

Comment:

Index_comment:

*************************** 3. row ***************************

Table: eload_promotion_code

Non_unique: 1

Key_name: idx_cishu_exp

Seq_in_index: 2

Column_name: exp_time

Collation: A

Cardinality: 921642

Sub_part: NULL

Packed: NULL

Null:

Index_type: BTREE

Comment:

Index_comment:

可以看到id为主键,idx_cishu_exp为(cishu,exp_time)的唯一索引

看一下这个语句的执行计划,可以看到排序没有用到索引

explain SELECT * FROM eload_promotion_code WHERE 1 AND exp_time<1478782591 AND cishu=0 order by id desc limit 454660,20\G

*************************** 1. row ***************************

id: 1

select_type: SIMPLE

table: eload_promotion_code

type: ref

possible_keys: idx_cishu_exp

key: idx_cishu_exp

key_len: 4

ref: const

rows: 460854

Extra: Using where; Using filesort

1 row in set (0.00 sec)

将select * 换成select id后再看执行计划,可以用索引覆盖

>explain select id FROM eload_promotion_code WHERE 1 AND exp_time<1478782591 AND cishu=0 order by id desc limit 454660,20 \G

*************************** 1. row ***************************

id: 1

select_type: SIMPLE

table: eload_promotion_code

type: range

possible_keys: idx_cishu_exp

key: idx_cishu_exp

key_len: 8

ref: NULL

rows: 460862

Extra: Using where; Using index; Using filesort

1 row in set (0.00 sec)

好吧,这个语句有救了,采用延时关联先取出id,然后根据id获取原表所需要的行,改写后的语句来了:select * from eload_promotion_code inner join (select id from eload_promotion_code where exp_time<1478782591 AND cishu=0 order by id desc limit 454660,20) as x on eload_promotion_code.id=x.id;

执行一下,0.3s出结果。

这样就算完了。

原文:http://chenql.blog.51cto.com/8732050/1871575

mysql索引 倒排表_mysql倒排的优化相关推荐

  1. mysql索引两个表_MySQL索引优化(索引两表优化案例)

    建表SQL CREATE TABLE IF NOT EXISTS `class` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `card` INT ...

  2. mysql索引空间太大_MySQL优化索引

    1.  MySQL如何使用索引 索引用于快速查找具有特定列值的行.如果没有索引,MySQL必须从第一行开始,然后遍历整个表以找到相关的行.表越大,花费越多.如果表中有相关列的索引,MySQL可以快速确 ...

  3. mysql 排除另一表_MYSQL 两表 排除 重复记录

    MySQL之--查询重复记录.删除重复记录方法大全 - 冰河的专栏 - CSDN博客 https://blog.csdn.net/l1028386804/article/details/5173358 ...

  4. mysql索引底层实现原理_mysql的索引底层之实现原理

    MySQL索引背后的数据结构及算法原理 一.定义 索引定义:索引(Index)是帮助MySQL高效获取数据的数据结构. 本质:索引是数据结构. 二.B-Tree m阶B-Tree满足以下条件: 1.每 ...

  5. mysql存储引擎静态表_MySQL存储引擎(表类型)的选择

    一.MySQL存储引擎概述 MySQL与多数数据库不同的是包含存储引擎这一特性,用户可以根据应用的需要选择合适的存储引擎来使存储和索引数据,以及是否使用事务等.MySQL5.0支持的存储引擎包括MyI ...

  6. mysql索引4种结构_mysql索引:四种类型,两种方法

    1. 普通索引:最基本的索引,它没有任何限制,用于加速查询. 2. 唯一索引unique:索引列的值必须唯一,但允许有空值.如果是组合索引,则列值的组合必须唯一. 3. 主键索引: 是一种特殊的唯一索 ...

  7. mysql索引查2遍_mysql索引优化查询

    一:mysql的引擎简介. 1.ISAM:查找速度快,不支持事物,如果硬盘崩溃则无法恢复. 2.MyISAM:是ISAM的扩展,在web中用的很多,读取速度快,,不支持事物. 3.InnoDB:Inn ...

  8. mysql索引红黑联盟_MySQL索引

    MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度. 可以把索引看作是汉语字典的目录页,我们可以按拼音.笔画.偏旁部首等排序的目录(索引)快速查找到需要的字. ...

  9. mysql索引 删除和创建_mysql索引和唯一索引的创建和删除

    一.本机环境 二.索引的创建删除 三.唯一索引的创建和删除 一.本机环境 系统环境:linux centos 7.2 mysql版本:mysql-5.7.9 安装目录:/application/mys ...

最新文章

  1. Java-ORM数据库框架CDM介绍
  2. 【English】哈佛大学用这12张图,让你远离负能量
  3. 在python中、下列代码的输出是什么-python面试题
  4. QML自定义IP地址输入框
  5. IPIP地址、ipv4ipv6、子网掩码、网段计算、网络广播ID计算、默认网关、DNS服务器、DHCP服务器
  6. matplotlib 操作子图(subplot,axes)
  7. PHP手册总结《预定义变量》
  8. 中国电子银行网-互联网金融第一大网站
  9. [转] 如何看透一个人
  10. win10+vs2015破解VA_X
  11. 2022危险化学品经营单位安全管理人员考试模拟100题及模拟考试
  12. 《C语言点滴》一第1章 程序猿 程序媛1.1 装备篇
  13. 从northwind中查询Products中最高单价(UnitPrice)是多少;
  14. win10自动安装软件
  15. 恒流LED驱动芯片 SM15133EK SM15133EH 明微电子
  16. 推荐最适合IT人自学的视频网站、社区网站
  17. 笔记②:牛客校招冲刺集训营---C++工程师(面向对象(友元、运算符重载、继承、多态) -- 内存管理 -- 名称空间、模板(类模板/函数模板) -- STL)
  18. android 双屏壁纸,怎么让双屏显示壁纸不一样
  19. 下载imageLib工具包批量转换.flo文件为png
  20. 基于STM32F103C8T6的循迹避障小车完整制作过程(详细)----上篇(第123点)

热门文章

  1. debian 8 和centos 配置java 环境变量的正确姿态
  2. 区分PC端与移动端代码,涵盖C#、JS、JQuery、webconfig
  3. FullCalendar 的学习笔记(一)
  4. for循环删除集合陷阱
  5. HDU3348 coins【贪心】
  6. markdown数学公式
  7. HDU2083 简易版之最短距离【最值】
  8. Bailian4030 统计单词数【文本处理】
  9. 《程序设计技术》第三章例程
  10. UVA160 Factors and Factorials【筛选法】