Mysql覆盖索引与延迟关联
延迟关联:通过使用覆盖索引查询返回需要的主键,再根据主键关联原表获得需要的数据。
为什innodb的索引叶子节点存的是主键,而不是像myisam一样存数据的物理地址指针?
如果存的是物理地址指针不就不需要二次查找了吗,根据myisam和innodb数据存储方式的差异去想
innodb为了避免二次查找可以使用索引覆盖技术,无法使用索引覆盖的,就使用基于索引覆盖实现延迟关联;
一般查询:
order by col limit N,OFFSET M , MySQL 执行此类sql时需要先扫描到N行
select goods_id,name from sm_goods_all order by goods_id limit 1000000, 10
10 rows retrieved starting from 1 in 3s 611ms (execution: 3s 603ms, fetching: 8ms)

延迟关联查询:
select g1.goods_id, g1.name from sm_goods_all g1, (SELECT goods_id FROM sm_goods_all ORDER BY goods_id LIMIT 1000000, 10) g2
where g1.goods_id=g2.goods_id
10 rows retrieved starting from 1 in 246ms (execution: 236ms, fetching: 10ms)

select goods_id,name from sm_goods_all
where goods_id >= (select goods_id from sm_goods_all order by goods_id asc limit 1000000,1)
limit 10
10 rows retrieved starting from 1 in 246ms (execution: 234ms, fetching: 12ms)

数据量大的情况下,延迟关联比一般查询快了10陪
参考:
Mysql覆盖索引与延迟关联的更多相关文章
- mysql优化:覆盖索引(延迟关联)
		
前言 上周新系统改版上线,上线第二天就出现了较多的线上慢sql查询,紧接着dba 给出了定位及解决方案,这里较多的是使用延迟关联去优化. 而我对于这个延迟关联也是第一次听说(o(╥﹏╥)o),所以今天 ...
 - mysql覆盖索引与回表
		
mysql覆盖索引与回表 Harri2012关注 62019.07.28 11:14:15字数 1,292阅读 77,322 select id,name where name='shenjian' ...
 - MySQL 覆盖索引
		
通常大家都会根据查询的WHERE 条件来穿件合适的索引,不过这只是索引优化的一个方面.设计优秀的索引应该考虑到整个查询,而不单单是WHERE 条件部分.索引确实是一种查找数据的高效方式,但是MySQL ...
 - mysql覆盖索引详解
		
覆盖索引的定义: 如果一个索引包含(或覆盖)所有需要查询的字段的值,称为‘覆盖索引’.即只需扫描索引而无须回表. 只扫描索引而无需回表的优点: 1.索引条目通常远小于数据行大小,只需要读取索引, ...
 - MySQL性能优化之延迟关联
		
[背景] 某业务数据库load 报警异常,cpu usr 达到30-40 ,居高不下.使用工具查看数据库正在执行的sql ,排在前面的大部分是: SELECT id, cu_id, name, in ...
 - mysql覆盖索引(屌的狠,提高速度)
		
话说有这么一个表: CREATE TABLE `user_group` ( `id` int(11) NOT NULL auto_increment, `uid` int(11) NOT NULL, ...
 - mysql覆盖索引
		
话说有这么一个表: CREATE TABLE `user_group` ( `id` int(11) NOT NULL auto_increment, `uid` int(11) NOT NU ...
 - Mysql覆盖索引 covering index 或者 index coverage
		
组合索引 提到组合索引,大家都知道"最左前缀"原则.例如,创建索引 idx_name_age (name,age) ,通常情况下,where age=50 或者 where age ...
 - mysql分页查询优化(索引延迟关联)
		
对于web后台报表导出是一种常见的功能点,实际对应服务后端即数据库的排序分页查询.如下示例为公司商户积分报表导出其中一个sql ,当大批量的导出请求进入时候,mysql的cpu急剧上升瞬间有拖垮库的风 ...
 
随机推荐
- jquery.attach附件上传jquery插件
			
html: <!DOCTYPE html> <html lang="zh-cn"> <head> <meta http-equiv=&qu ...
 - unicode and utf-8
			
今晚听同事分享提到这个,简单总结下. Unicode字符集 Unicode的出现是因为ASCII等其他编码码不够用了,比如ASCII是英语为母语的人发明的,只要一个字节8位就能够表示26个英文字母了, ...
 - kafka学习之-深入研究原理
			
参考博客: http://www.cnblogs.com/fxjwind --阿里牛人 http://blog.csdn.net/lizhitao/article/details/41778193 ...
 - 记录下DynamicXml和HtmlDocument 使用方式
			
之前解析都是XmlDocument.Load 而现在可以利用DynamicXml生成Dynamic对象实现强类型操作,很好用. /// <summary> /// 根据Xml路径动态解析成 ...
 - C#操作MSMQ(消息队列)
			
using System; using System.Collections.Generic; using System.Text; using System.Messaging; using Sys ...
 - Credential
			
https://www.cnblogs.com/Hawk-Hong/p/4293651.html 在项目开发,我们经常会使用WebService,但在使用WebService时我们经常会考虑以下问题: ...
 - JBOSS-EAP-6.2集群部署
			
1 概述 应用的合理部署即能提高系统的可靠性和稳定性,又能提高系统的可维护性和扩展性.本文档详细阐述基于Apache负载均衡和JBOSS7集群的应用系统部署方案和配置步骤.内容涉及部署方案.环境配置. ...
 - Android中文API
			
Android中文API http://www.android-doc.com/index.html
 - C语言近程型(near)和远程型(far)的区别是什么?
			
DOS用一种分段结构来寻址计算机的内存,每一个物理存储位置都有一个可以用段一偏移量方式来访问的相关地址.例如,下面就是一个典型的段式地址: A000:1234 冒号左边的部分代表段地址(A00 ...
 - PHP webservice 接口实例
			
原文地址,就不摘抄了 http://www.sky00.com/archives/91.html