1.索引是高效获取数据的数据结构,

2.唯一索引,索引值不重复unique

create unique index 索引名 on 表名(字段)

alter table 表名 add unique index 索引名(字段)

3.主键索引 唯一索引的一种 primary key

create table 表名(id int not null primary auto_increament)type=myism

4.单列索引和多列索引(复合索引)

复合索引用最左前缀的概念

5.聚簇索引

索引中键值的逻辑顺序决定表中的物理顺序,聚簇索引决定表中的物理顺序

innodb主键就是聚簇索引,myisam没有聚簇索引

6.show index from 表名 查看表的索引

key_name ->索引类型 column_name ->索引字段

cardinality ->索引基数 平均数组值=基数/总行数 越接近1表示越可能用到索引

index_type -> 索引结构 fulltext b+tree

7.b-tree性质

m阶b-tree

ki表示关键字 k1<k2<k3<k4<k5<k6<k7<k8<kn  左子结点关键字的值<右子节点关键字的值

pi表示指向子节点指针 左指针指向左节点 右指针指向右节点 p1指向值<k1<p2指向值<k2

所有关键字必须唯一(myisam和innodb必须建主键的原因)

节点-》 每个节点最多有 m 个子节点

根节点若非是叶子节点最少有两个子节点

非根非叶子节点至少有m/2个子节点

关键字-》根节点关键字个数1-(m-1)

非根非叶子节点关键字(m/2-1) - (m-1)

关键字数 +1 =指针数

b+tree是b-tree的变体 关键字数 = 指针数

8.myisam的索引结构

myisam索引采用b+tree结构存储数据,索引指针指向键值地址,地址存储数据

myisam的索引和数据是分离的 索引保存在 表名.myi 数据保存在 biaoming.myd文件

9.innodb索引结构

innodb索引结构跟myisam有明显区别 索引和数据存储在一起

支持事务-》三行隐藏数据列 db_row_id db_row_ptr db_row_id

主键索引保存数据 辅助索引保存主键的值 -》索引主键索引越短越好,这样辅助索引也就越小

10.myisam和innodb比较

myisam支持全文索引,顺序存储,索引叶子节点保存数据地址,辅助索引和主键差不多

innodb支持事务,主键节点直接保存数据,辅助索引保存主键索引的值

myisam键值分离 索引载入内存 innodb 键值保存在一起,索引和数据一起载入innodb缓冲池

11.mysql的优化

表数据类型

-》尽量小-》使用能正确表示的最短的数据类型存储-》减少磁盘空间 内存 cpu使用

-》避免使用null count统计列时会忽略null的行 不会用到索引

-》尽量使用整型 int(1)和int(11)是一样的

sql优化

-》复合索引的最左前缀原则, where字段要和索引顺序保持一致

-》复合索引会用到非第一列出现范围的一列 之后不会用到索引 第一列出现范围也不会用到索引

-》or会遍历全表不会用到索引

mysql索引相关理解的更多相关文章

  1. mysql 索引相关

    引言: MYSQL由于其免费和开源的性质,在项目中用处广泛.大家都知道,一个MySQL数据库能够储存大量的数据,如果要在大量的数据中查找某一个数据,如果使用全表检索的话,即费时间又费力气,这时,就需要 ...

  2. 面试小知识:MySQL索引相关

    前言 本模板主要是一些面试相关的题目,对于每一道问题,我会提供简单的解答,答案的来源主要是基于自己看了各方资料之后的理解,如果有错的,欢迎指点出来. 1. 什么是最左前缀原则? 以下回答全部是基于My ...

  3. mysql 索引相关知识

    由where 1 =1 引发的思考 最近工作上被说了 说代码中不能用 where 1=1,当时觉得是应该可以用的,但是找不到什么理据, 而且mysql 语句优化这方面确实很薄弱   感觉自己mysql ...

  4. mysql索引相关

    索引有主键索引.唯一索引.普通索引 单列索引,复合索引. 复合索引(a,b,c),可以理解是有三个索引,分别是a.b.c三个索引 前缀不是a的话,复合索引都不起作用,前缀用函数或者是范围,比如< ...

  5. mysql 索引相关问题

    mysql中key .primary key .unique key 与index区别 https://blog.csdn.net/nanamasuda/article/details/5254317 ...

  6. 简单聊一下对MySQL索引的理解?

    一.索引是什么? 索引是帮助MySQL高效获取数据的数据结构. 二.索引能干什么? 索引非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要. 索引能够轻易将查询性能提高好几个数量级, ...

  7. Mysql索引深入理解

    一.  引言 Mysql 我们平常用的很多,了解的很多,今天别的不说,直接说mysql的底层是什么,说到底层,就想到数据结构,那么,mysql的数据结构是什么呢? 是B + tree .那么数据库中的 ...

  8. 面试官:小伙子,你给我说一下你对MySQL索引的理解吧

    一.索引是什么? 索引是帮助MySQL高效获取数据的数据结构. 二.索引能干什么? 索引非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要.索引能够轻易将查询性能提高好几个数量级,总 ...

  9. 【逐步完善】MySql索引相关

    在表中对某个字段添加索引: alter table tablename add index (columnname);

随机推荐

  1. (转)一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10

    原文链接 http://blog.csdn.net/h5_queenstyle12/article/details/50424862 百度源代码如下 <!Doctype html> < ...

  2. laravel5.5种的Eloquent ORM的使用:

    控制器方法: //Eloquent ORM的使用: public function orm1() { //all() /*$students=Student::all(); dd($students) ...

  3. 关于TCP/IP协议

    TCP的特点: TCP是面向连接的传输层协议 TCP的传输是可靠传输 TCP是全双工的通信 TCP的连接是点对点的传输 TCP和UDP的区别 tcp是面向连接的,两台主机的通信之前必须通过三次握手建立 ...

  4. Linux系统中DHCP的配置

    DHCP为动态主机配置协议,负责IP地址的动态分配(当一个主机的IP为自动,则不需要自己写IP,他会在DHCP服务器的范围内自动获取) 在真机或虚拟机下配置DHCP服务时,需要先下载dhcp软件,使用 ...

  5. C# 给窗体添加皮肤 - SkinEngine的应用

    C# 给窗体添加皮肤 - SkinEngine的应用   C#中利用 IrisSkin2.dll 所提供的控件 SkinEngine 来为窗体添加皮肤.这种方法最简单 具体步骤: .添加控件SkinE ...

  6. 【测试工具】tcpdump + wireshark 抓包实践

    Tcpdump + Wireshark 抓包实践 工具介绍 Tcpdump 看到dump大家应该有所意识吧,就是下载数据,抓数据.tcpdump是linux下的一个抓取tcp包的命令 Usage: t ...

  7. mac下安装伪分布hadoop2.6.0和hbase1.0.1.1

    1.安装JDK,我安装的是java1.7 2.创建管理员账户 3.安装ssh服务(如果已有跳过此步) 4.ssh无密码验证登陆 以上过程略,可参考ubuntu下安装hadoop一文. 5.下载并解压h ...

  8. java中守护线程的一些概念和用法

    网上的资料中,守护线程的功能一般都是“只要当前JVM实例中尚存任何一个非守护线程没有结束,守护线程就全部工作:只有当最后一个非守护线程结束是,守护线程随着JVM一同结束工作,Daemon作用是为其他线 ...

  9. List集合学习

    Java中常用的List子类主要有:ArrayList.LinkedList.Vector.有序(存储和取出的元素一致),可重复的. 三者比较 1:访问:ArrayList和Vector都实现了Ran ...

  10. Codeforces 9D How many trees? 【计数类DP】

    Codeforces 9D How many trees? LINK 题目大意就是给你一个n和一个h 问你有多少个n个节点高度不小于h的二叉树 n和h的范围都很小 感觉有无限可能 考虑一下一个很显然的 ...