mysql索引 倒排表_mysql倒排的优化
今天数据库负载就直线上升,数据库连接数撑爆。把语句抓出来一看,罪魁祸首是一条很简单的语句: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倒排的优化相关推荐
- mysql索引两个表_MySQL索引优化(索引两表优化案例)
建表SQL CREATE TABLE IF NOT EXISTS `class` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `card` INT ...
- mysql索引空间太大_MySQL优化索引
1. MySQL如何使用索引 索引用于快速查找具有特定列值的行.如果没有索引,MySQL必须从第一行开始,然后遍历整个表以找到相关的行.表越大,花费越多.如果表中有相关列的索引,MySQL可以快速确 ...
- mysql 排除另一表_MYSQL 两表 排除 重复记录
MySQL之--查询重复记录.删除重复记录方法大全 - 冰河的专栏 - CSDN博客 https://blog.csdn.net/l1028386804/article/details/5173358 ...
- mysql索引底层实现原理_mysql的索引底层之实现原理
MySQL索引背后的数据结构及算法原理 一.定义 索引定义:索引(Index)是帮助MySQL高效获取数据的数据结构. 本质:索引是数据结构. 二.B-Tree m阶B-Tree满足以下条件: 1.每 ...
- mysql存储引擎静态表_MySQL存储引擎(表类型)的选择
一.MySQL存储引擎概述 MySQL与多数数据库不同的是包含存储引擎这一特性,用户可以根据应用的需要选择合适的存储引擎来使存储和索引数据,以及是否使用事务等.MySQL5.0支持的存储引擎包括MyI ...
- mysql索引4种结构_mysql索引:四种类型,两种方法
1. 普通索引:最基本的索引,它没有任何限制,用于加速查询. 2. 唯一索引unique:索引列的值必须唯一,但允许有空值.如果是组合索引,则列值的组合必须唯一. 3. 主键索引: 是一种特殊的唯一索 ...
- mysql索引查2遍_mysql索引优化查询
一:mysql的引擎简介. 1.ISAM:查找速度快,不支持事物,如果硬盘崩溃则无法恢复. 2.MyISAM:是ISAM的扩展,在web中用的很多,读取速度快,,不支持事物. 3.InnoDB:Inn ...
- mysql索引红黑联盟_MySQL索引
MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度. 可以把索引看作是汉语字典的目录页,我们可以按拼音.笔画.偏旁部首等排序的目录(索引)快速查找到需要的字. ...
- mysql索引 删除和创建_mysql索引和唯一索引的创建和删除
一.本机环境 二.索引的创建删除 三.唯一索引的创建和删除 一.本机环境 系统环境:linux centos 7.2 mysql版本:mysql-5.7.9 安装目录:/application/mys ...
最新文章
- Java-ORM数据库框架CDM介绍
- 【English】哈佛大学用这12张图,让你远离负能量
- 在python中、下列代码的输出是什么-python面试题
- QML自定义IP地址输入框
- IPIP地址、ipv4ipv6、子网掩码、网段计算、网络广播ID计算、默认网关、DNS服务器、DHCP服务器
- matplotlib 操作子图(subplot,axes)
- PHP手册总结《预定义变量》
- 中国电子银行网-互联网金融第一大网站
- [转] 如何看透一个人
- win10+vs2015破解VA_X
- 2022危险化学品经营单位安全管理人员考试模拟100题及模拟考试
- 《C语言点滴》一第1章 程序猿 程序媛1.1 装备篇
- 从northwind中查询Products中最高单价(UnitPrice)是多少;
- win10自动安装软件
- 恒流LED驱动芯片 SM15133EK SM15133EH 明微电子
- 推荐最适合IT人自学的视频网站、社区网站
- 笔记②:牛客校招冲刺集训营---C++工程师(面向对象(友元、运算符重载、继承、多态) -- 内存管理 -- 名称空间、模板(类模板/函数模板) -- STL)
- android 双屏壁纸,怎么让双屏显示壁纸不一样
- 下载imageLib工具包批量转换.flo文件为png
- 基于STM32F103C8T6的循迹避障小车完整制作过程(详细)----上篇(第123点)