技术标签: 数据库
MySQL索引基础知识,MySQL索引的优化,MySQL排序
聚簇索引:又称聚集索引,并不是一种单独的索引类型,而是一种数据存储方式。具体的细节依赖于其实现方式,但InnoDB的聚簇索引实际上在同一个结构中保存了B-Tree索引和数据行。
当表有聚簇索引时,它的数据行实际上存放在索引的叶子页(Leaf page)中,术语“聚簇”表示数据行和相邻的键值紧凑地存储在一起。因为无法同时把数据行存放在两个不同的地方,所以一个表只能有一个聚簇索引(不过,覆盖索引可以模拟多个聚簇索引的情况)。
InnoDB通过主键聚集数据,如果没有定义主键,InnoDB会选择一个唯一的非空索引代替。如果没有这样的索引,InnoDB会隐式定义一个主键来作为聚簇索引。InnoDB只聚集在同一页面中的记录。包含相邻键值的页面可能会相距甚远。
聚簇索引按照如下规则创建:
Note: 对于选择唯一索引的顺序是按照定义唯一索引的顺序,而非表中列的顺序, 同时选中的唯一索引字段会充当为主键,或者Innodb隐式创建的自增列也可以看做主键。
聚簇索引整体是一个b+树,非叶子节点存放的是键值,叶子节点存放的是行数据,称之为数据页,这就决定了表中的数据也是聚簇索引中的一部分,数据页之间是通过一个双向链表来链接的,上文说到B+树是一棵平衡查找树,也就是聚簇索引的数据存储是有序的,但是这个是逻辑上的有序,但是在实际在数据的物理存储上是,因为数据页之间是通过双向链表来连接,假如物理存储是顺序的话,那维护聚簇索引的成本非常的高。
详细引用来源
二级索引保存的式行的主键值
CREATE TABLE `t_wms_sku` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`sku_id` bigint(20) NOT NULL DEFAULT '0',
`sku_name` varchar(50) NOT NULL DEFAULT '',
`price` decimal(18,2) NOT NULL DEFAULT '0.00',
`class3_id` bigint(20) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `udx_sku_id` (`sku_id`) USING BTREE,
KEY `idx_class3` (`class3_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=8195 DEFAULT CHARSET=utf8
type意味着类型,这里的type官方全称是“join type”,意思是“连接类型”,这样很容易给人一种错觉觉得必须需要俩个表以上才有连接类型。事实上这里的连接类型并非字面那样的狭隘,它更确切的说是一种数据库引擎查找表的一种方式,在《高性能mysql》称呼它为访问类型更贴切一些。
type显示的是访问类型,是较为重要的一个指标,结果值从最好到最差依次是:system>const>eq_ref>refindex>all
explain select * from t_wms_sku where sku_name = '油菜(大棵/新鲜|斤)' ;
explain select sku_id from t_wms_sku;
explain select * from t_wms_sku where sku_id < 1249;
explain select * from t_wms_sku where id < 1249
explain select * from t_wms_sku where class3_id = 555;
explain
select s.*, p.* from t_wms_sku s
inner join p_sku p on s.sku_id = p.id
explain select * from t_wms_sku where sku_id = 1238;
表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值。
出现上述情况,因为MySQL的join是通过嵌套循环实现的。
文章浏览阅读1.2k次。链接:https://ac.nowcoder.com/acm/contest/642/M来源:牛客网题目描述BiuBiuBiu 每次出去玩都要去坐地铁,BiuBiuBiu 观察到,当地铁上人比较少的时候,大家都会选择那些与其他人不相邻的座位,现在地铁上有 n 个座位排成一排,1 号座位与 2 号相邻,n 号座位与 n-1 号相邻,除了 1 号与 n 号座位,任意 i 号座位都与 i-..._n个座位地铁坐下人数的期望值
文章浏览阅读1k次。I am getting the following error when connecting to a SQL Server database using version the Microsoft JDBC Driver:com.microsoft.sqlserver.jdbc.SQLServerException: The driver could not establish a secu..._java ssl 1.2指定还是报错
文章浏览阅读640次,点赞23次,收藏10次。本文介绍了部分Linux的命令,为学习使用_假设当前登录用户是root,执行cd ~
文章浏览阅读331次。vue-aliplayer-v2 ,直播,阿里云视频直播_vue-aliplayer-v2
文章浏览阅读9.7k次,点赞4次,收藏14次。Web3j是一个轻量级,Reactive(响应式),类型安全的Java库,用于与Ethereum网络上的客户端(节点)集成,这允许您使用Ethereum块链,而不需要为平台编写自己的集成代码的额外开销。 2.1 Web3J的提供的功能1. 通过HTTP和IPC 完成Ethereum的JSON-RPC客户端API的实现2. Ethereum钱包支持3. 使用过滤器的函数..._web3j是什么
文章浏览阅读89次。VB 刷网站代码 2011年03月18日 以下代码送给开网站的朋友们 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ↓↓↓ ↓↓↓↓第 一 种↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓代 码↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ Dim..._网站刷pv源码 site:blog.csdn.net
文章浏览阅读874次。学习目标:提示:这里可以添加学习目标例如: 一周掌握 Java 入门知识学习内容:提示:这里可以添加要学的内容例如:搭建 Java 开发环境掌握 Java 基本语法掌握条件语句掌握循环语句学习时间:提示:这里可以添加计划学习的时间例如:周一至周五晚上 7 点—晚上9点周六上午 9 点-上午 11 点周日下午 3 点-下午 6 点学习产出:提示:这里统计学习计划的总量例如: 技术笔记 2 遍 CSDN 技术博客 3 篇 习的 vlog 视频 1
文章浏览阅读2.7k次。return false会阻止表单提交,基本上关于onsubmit=return false有以下几点要注意的地方,学习后台编程的朋友一定要知道。1. return 的返回值问题,函数中return一旦有返回值,就不在执行下面的语句,直接跳到函数调用的地方。如下PHP函数代码,第一个if条件符合则函数值返回布尔型false,可以返回一个函数的值,并且跳出这个函数;只要遇到return语_阻止表单提交,为什么onclick必须要return ?
文章浏览阅读2.6k次。好消息驾临了!是日于此刻,我们与jQTouch(http://www.jqtouch.com/)和Raphaël(http://www.raphaeljs.com/)两大项目强强联手,打造新的Sencha品牌,从而网站的网址就由www.extjs.com更名为www.sencha.com。jQTouch和Raphaël可以说在它们的各自领域都扮演着领头羊的角色,而我们能够携手jQTouch和Raphaël的作者,David Kaneda跟Dmitry Baranovskiy, 慧慧相识,共同一起见证参与_jqtouch与和sencha touch实验心得体会
文章浏览阅读2.1k次。TDP 热设计功耗 (TDP) 120 W 三级缓存 30 MB 内存类型 DDR3 800/1066/1333/1600/1866。e52696v2 采用Ivy Bridge架构 22 nm制作工艺十二核心二十四线程主频2.5 GHz最大睿频3.3 GHz。E52680V2十核心二十线程,主频2.8最大睿频3.6,L3缓存25M,22纳米工艺。组装电脑选E5 2696v2还是E52680V2怎么搭配更合适这些点很重要。_2696v2和2680v2哪个好
文章浏览阅读402次。一 基 于 MATLAB的 就 业 数 据 的 聚 类 分 析 邹 全 常程威 贾月月 (常州 工学 院 电气 与光 电工程学 院 ,江苏 常州 213100) 摘 要 :根据20lO年到2O13年我院校大学生就业情况 ,对大学生的就业数据进行 分析 。数据分析有很 多方法 .本 文主要 采用 谱 系聚类 、K均值 聚类、模糊C均值 聚类三种 聚类方法 ,并得 出了结论 。 关键词 :MATLAB..._matlab中聚类分析最多分析多少数据
文章浏览阅读1k次。近日遇到一个线上服务 socket 资源被不断打满的情况。通过各种工具分析线上问题,定位到问题代码。这里对该问题发现、修复过程进行一下复盘总结。先看两张图。一张图是服务正常时监控到的 socket 状态,另一张当然就是异常啦!图一:正常时监控图二:异常时监控从图中的表现情况来看,就是从 04:00 开始,socket 资源不断上涨,每个谷底时重启后恢复到正常值,然后继续不断上涨不释放,而且每次达到..._mysql出现很多的close_wait,导致不能连接数据库