mysql的索引的学习

优秀相关博客地址

1. https://www.cnblogs.com/liqiangchn/p/9060521.html 通俗易懂

一、索引的分类

1:从存储结构上来划分:BTree索引(B-Tree或B+Tree索引),Hash索引,full-index全文索引,R-Tree索引。

2:从应用层次来分:普通索引,唯一索引,复合索引

3:根据中数据的物理顺序与键值的逻辑(索引)顺序关系:聚集索引,非聚集索引。

? 1中所描述的是索引存储时保存的形式,2是索引使用过程中进行的分类,两者是不同层次上的划分。

不过平时讲的索引类型一般是指在应用层次的划分。

二、B、B+树

B+树是B-树的优化,B+树是非叶子节点做索引项,叶子节点做数据信息项,并且叶子节点每M个也就是一个数据页之间是使用指针进行关联,也就是B+树只需要遍历叶子节点就可以实现整个树的遍历,可以更加好地使用范围查询。

B+树增加和删除是符合B树的特性,当子孩子项大于M时,数据就会分裂,中间的节点就会充当父节点。

基于主键进行创建索引,可以减少当增加和删除时候产生的数据分裂的数据更新的操作。

三、聚集索引以及辅组索引

mysql 是使用B+树作为数据结构索引,并且再数据的物理量顺序和索引的顺序使用了聚集索引,也就是叶子节点是存储数据信息,而辅组索引是存储聚集索引的索引项,找到索引项之后又要进行二次索引再一次进行查询

四、顺序主键的策略:

  在InnoDB表中使用自增主键是既简单性能又高的策略,这样可以保证数据按顺序写入。最好避免随机的聚集索引,从性能的角度考虑,使用UUID来作为聚集索引是很糟糕的,这样不仅插入行花费的时间长,而且索引占用的空间也更大。

五、什么样的列可以设置索引

六、执行查询时什么情况下不用使用到索引

原文地址:https://www.cnblogs.com/fc520/p/11717365.html

时间: 2024-10-23 19:14:00

mysql的索引的学习的相关文章

Mysql 索引案例学习

理解索引最好的办法是结合示例,所以这里准备了一个索引的案例. 假设要设计一个在线约会网站,用户信息表有很多列,包裹国家,地区,城市,性别,眼睛颜色,等等.完整必须支持上面这些特征的各种组合来搜索用户,还不行一些根据用户的最后在线时间,其他会员对用户的屏风等对用户进行排序并对结果进行限制.如何世界索引满足上面的负载需求呢? 出人意料的是第一件需要考虑的事情是需要使用索引来排序,还是先检索数据再排序.使用索引排序会严格限制索引和查询的设计.例如,如果希望使用索引做根据其他会员对用户的评分排序,则WH

MySQL单列索引和组合索引的区别介绍(转)

原文:http://database.51cto.com/art/201011/233234.htm MySQL单列索引是我们使用MySQL数据库中经常会见到的,MySQL单列索引和组合索引的区别可能有很多人还不是十分的了解,下面就为您分析两者的主要区别,供您参考学习. 为了形象地对比两者,再建一个表: CREATE TABLE myIndex ( i_testID INT NOT NULL AUTO_INCREMENT, vc_Name VARCHAR(50) NOT NULL, vc_Cit

MYSQL INNODB索引

在MYSQL中索引是在存储引擎实现的,所以各个存储引擎中的索引的实现方式是不一样的.本章节主要是学习INNODB存储引擎中最常用的索引类型:聚簇索引和B-Tree索引 在INNODB存储引擎中表其实是oracle中类似的聚簇表而不是普通的堆表.INNODB根据主健的顺序存储数据,数据直接存储在主健的叶子节点上面.数据即索引,索引即数据.因此为了让数据尽可能的按照主健的顺序存储在一起innodb还专门设计了一个Insert buffer机制来保证(但不能百分之百的保证).如果数据根据主健值随机插入

mysql 组合索引

MySQL单列索引是我们使用MySQL数据库中经常会见到的,MySQL单列索引和组合索引的区别可能有很多人还不是十分的了解,下面就为您分析两者的主要区别,供您参考学习. 为了形象地对比两者,再建一个表: CREATE TABLE myIndex ( i_testID INT NOT NULL AUTO_INCREMENT, vc_Name VARCHAR(50) NOT NULL, vc_City VARCHAR(50) NOT NULL, i_Age INT NOT NULL, i_Schoo

Lucene 5.2.1 + jcseg 1.9.6中文分词索引(Lucene 学习序列2)

Lucene 5.2.1 + jcseg 1.9.6中文分词索引(Lucene 学习序列2) jcseg是使用Java开发的一个开源的中文分词器,使用流行的mmseg算法实现.是一款独立的分词组件,不是针对lucene而开发,但是提供了最新版本的lucene和solr分词接口. Java Code <span style="font-size:14px;">package com.qiuzhping.lucene; import java.sql.Connection; i

MySQL单列索引和组合索引的区别介绍

MySQL单列索引是我们使用MySQL数据库中经常会见到的,MySQL单列索引和组合索引的区别可能有很多人还不是十分的了解,下面就为您分析两者的主要区别,供您参考学习. 为了形象地对比两者,再建一个表: CREATE TABLE myIndex (      i_testID INT NOT NULL AUTO_INCREMENT,      vc_Name VARCHAR(50) NOT NULL,      vc_City VARCHAR(50) NOT NULL,      i_Age I

linux系统下mysql配置优化初学习入门

学习mysql 一段时间了,在mysql配置优化方面做一下总结,mysql优化要考虑到多方面,多因素.与服务器的硬件,当前运行的环境都息息相关.下面来说一下mysql的配置优化: [client] port = 3306 socket = /tmp/mysql.sock    [mysqld] port = 3306 socket = /tmp/mysql.sock   basedir = /usr/local/mysql datadir = /data/mysql pid-file = /da

MySQL单列索引和组合索引的创建及区别介绍

MySQL单列索引是我们使用MySQL数据库中经常会见到的,MySQL单列索引和组合索引的区别可能有很多人还不是十分的了解,下面就为您分析两者的主要区别,供您参考学习. 为了形象地对比两者,再建一个表: CREATE TABLE myIndex ( i_testID INT NOT NULL AUTO_INCREMENT, vc_Name VARCHAR(50) NOT NULL, vc_City VARCHAR(50) NOT NULL, i_Age INT NOT NULL, i_Schoo

MySQL(Innodb)索引的原理

引言 回想四年前,我在学习mysql的索引这块的时候,老师在讲索引的时候,是像下面这么说的 索引就像一本书的目录.而当用户通过索引查找数据时,就好比用户通过目录查询某章节的某个知识点.这样就帮助用户有效地提高了查找速度.所以,使用索引可以有效地提高数据库系统的整体性能. 嗯,这么说其实也对.但是呢,大家看完这种说法,其实可能还是觉得太抽象了!因此呢,我还想再深入的细说一下,所以就有了此文!需要说明的是,我说的内容只在Mysql的Innodb引擎中是成立的.在Sql Server.oracle.M