一.索引介绍

1.什么是索引1)索引就好比一本书的目录,它能让你更快的找到自己想要的内容。

2)让获取的数据更有目的性,从而提高数据库检索数据的性能。

2.索引类型介绍1)BTREE:B+树索引 ( Btree B+tree B*tree)

2)HASH:HASH索引 (hash key)

3)FULLTEXT:全文索引

4)RTREE:R树索引

1.Btree :

2.Btree索引(优化了查询范围,在叶子节点添加了相邻节点的指针)

3·B*tree索引(在枝节点添加了指针)

3.索引管理索引建立在表的列上(字段)的。

在where后面的列建立索引才会加快查询速度。

pages

普通索引 ( key)

唯一索引(unique key)2、添加索引:

### 4.实例(参考)

CREATE TABLE `test_table` (

`ID` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',

`DOMAIN_CODE` varchar(20) NOT NULL COMMENT '考试单位编号',

`EXAM_NAME` varchar(300) NOT NULL COMMENT '考试名称',

`EXAM_TYPE` int(1) NOT NULL COMMENT '考试类型(正式考试,补考)',

`TARGET_EXAM_ID` bigint(20) DEFAULT NULL COMMENT '关联正式考试的ID(如果是补考,该处是必填)',

`EXAM_PICTURE_PATH` varchar(100) DEFAULT NULL COMMENT '图示路径',

`EXAM_BEGIN_TIME` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '考试开始时间',

`EXAM_END_TIME` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '考试结束时间',

`EXAM_TIME` int(3) NOT NULL COMMENT '考试时长',

`EXAM_NEED_SCORE` int(5) NOT NULL COMMENT '考试所需积分',

`EXAM_PAPER_TYPE` int(1) DEFAULT NULL COMMENT '考试试卷类型(0固定、1随机)',

`EXAM_SCORE` double(6,2) DEFAULT NULL COMMENT '考试总分(关联试卷后回填)',

`EXAM_PASS_SCORE` double(6,2) NOT NULL COMMENT '考试及格分',

`EXAM_COMMIT_NUM` int(2) NOT NULL COMMENT '参考最大次数',

`EXAM_STATUS` int(1) NOT NULL COMMENT '发布状态0未发布,1已发布',

`EXAM_YEAR` varchar(5) NOT NULL COMMENT '年份',

`EXAM_PAPER_ID` bigint(20) DEFAULT NULL COMMENT '关联试卷ID',

`EXAM_DISCRIPTION` varchar(1000) DEFAULT NULL COMMENT '考试备注',

`OPERATOR_USER_ACCOUNT` varchar(20) NOT NULL COMMENT '修改人',

`OPERATOR_TIME` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '修改时间',

`TARGET_DOMAIN_CODE` varchar(20) DEFAULT NULL COMMENT '发布目标单位编号(发布时回填)',

`RANK` varchar(100) DEFAULT NULL COMMENT '职务级别(发布时回填)',

`EXAM_DIPLOMA_ID` bigint(20) DEFAULT NULL COMMENT '关联证书',

`DIPLOMA_NAME` varchar(200) DEFAULT NULL COMMENT '证书标题(关联证书后回填',

`DIPLOMA_PICTURE_PATH` varchar(200) DEFAULT NULL COMMENT '证书背景图片保存位置(关联证书后回填)',

`INDUSTRY_CODES` varchar(1000) DEFAULT NULL,

`LANGUAGE` int(2) NOT NULL DEFAULT '1' COMMENT '语言(0:全部,1:汉语,2:维语,3:è’语,4:哈语)',

`EXT1` int(1) NOT NULL DEFAULT '1' COMMENT '成绩计入学分的字段标识(0 是,1否)',

`EXT2` int(3) DEFAULT NULL COMMENT '成绩所占比例',

`EXT3` varchar(1) DEFAULT NULL,

`EXT4` varchar(1) DEFAULT NULL,

`EXT5` varchar(1) DEFAULT NULL,

#索引 PRIMARY KEY (`ID`),

KEY `DOMAIN_CODE` (`DOMAIN_CODE`),

KEY `EXAM_PAPER_ID` (`EXAM_PAPER_ID`)

) ENGINE=InnoDB AUTO_INCREMENT=365 DEFAULT CHARSET=utf8;

5.索引操作

#创建普通索引mysql> alter table student4 add index idx_sname(sname);

#创建主键索引mysql> alter table st add primary key pri_id(id);

#创建索引create index index_name on test(name);

#删除索引alter table test drop key index_name;

# 如何判断,该列是否能创建唯一键#统计行数mysql> select count(sgender) from student2;

#统计去重后的行数mysql> select count(distinct(sgender)) from student2;

#添加唯一性索引alter table student add unique key uni_xxx(xxx);

#查看表中数据行数select count(*) from city;

#查看去重数据行数select count(distinct name) from city;

#查看索引三种方式mysql> desc student4;

mysql> show index from student4;

mysql> show create table student4;

6.前缀索引

根据字段的前N个字符建立索引

#创建前缀索引

mysql> alter table student2 add index idx_sname2(sname(3));1.避免对大列 建索引

2.如果有,就使用前缀索引

7.联合索引

多个字段建立一个索引例:

where a.女生 and b.身高 and c.体重 and d.身材好

index(a,b,c)

特点:前缀生效特性

a,ab,ac,abc,abcd 可以走索引或部分走索引

b bc bcd cd c d ba ... 不走索引

原则:把最常用来做为条件查询的列放在最前面

例如:想亲网站 sex money body age hight weight face name phone QQ wechat

会一般把sex 性别放在第一位。

#创建people表

create table xiangqin( id, name varchar(10), age int, money bigint, body varchar(10), hight int, weight int, face varchar(10), phone varchar(11), sex enum('f','m'));

#创建联合索引

mysql> alter table xiangqin add index idx_all(sex,money,body,face);

insert into xiangqin values('ly',30,999999999,'perfact',158,90,'nice','133','f'), ('qbl',58,1000000,'bad',150,150,'very bad','000','f'), ('wbq',50,9999999,'suibian',170,120,'suiyi',132,'m');

#查询

走索引

mysql> select * from xiangqin where sex='f' and money>10000000 and body='perfact' and face='nice';

不走索引

mysql> select * from xiangqin where money>10000000 and body='perfact' and face='nice'; mysql> select * from xiangqin where money>10000000 and body='perfact' and face='nice' and sex='f';

8.创建索引总结:1.不要在所有字段上都创建索引

2.如果有需求字段比较多,选择联合索引

3.如果有需求字段数据比较大,选择前缀索引

4.如果可以创建唯一索引,一定创建唯一索引

以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要PHP进阶架构师>>>视频、面试文档免费获取​shimo.im

或 者关注咱们下面的知乎专栏PHP7进阶架构师​zhuanlan.zhihu.com

mysql索引有哪些_MySQL索引是个什么东西相关推荐

  1. mysql索引设计策略_MySQL索引设计一些策略

    前言 索引加快了检索的速度,但是却降低了数据列里插入.删除以及修改数值的速度.也就是说,索引降低了许多涉及写入的操作速度.之所以出现这种情况,是由于写入一条数据不仅仅是要写入到数据行,还需要所有的索引 ...

  2. mysql 索引类型案例_Mysql索引类型与基本用法实例分析

    本文实例讲述了Mysql索引类型与基本用法.分享给大家供大家参考,具体如下: 索引 MySQL目前主要有以下几种索引类型: 普通索引 唯一索引 主键索引 组合索引 全文索引 - 普通索引 是最基本的索 ...

  3. mysql索引详解_MySQL索引详解

    导读:大家都知道,一个MySQL数据库能够储存大量的数据,如果要查找那一个数据,就得费好大劲从一大堆的数据中找到,即费时间又费力气,这时,索引的出现就大大减轻了数据库管理员的工作.本文介绍了数据库索引 ...

  4. mysql 索引生命周期_MYSQL 索引(一)--- 简介

    简介 Mysql 官方定义 : 索引(Index) 是帮助 Mysql 高效获取数据的数据结构. 索引的目的在于提交查询效率,可以类比字典.简单理解为 "排好序的快读查找数据结构" ...

  5. mysql设置索引树长度_MySQL索引-B+树

    索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据. 索引最形象的比喻就是图书的目录了.注意这里的大量,数据量大了索引才显得有意义,如果我想要在 [1,2,3,4] 中找到 4 ...

  6. mysql b tree图_MySQL索引--B-Tree(B+Tree)图文详解

    看了很多关于索引的博客,讲的大同小异.但是始终没有让我明白关于索引的一些概念,如B-Tree索引,Hash索引,唯一索引....或许有很多人和我一样,没搞清楚概念就开始研究B-Tree,B+Tree等 ...

  7. mysql索引底层图_MySQL索引底层数据结构

    一.何为索引? 1.索引是帮助数据库高效获取数据的排好序的数据结构. 2.索引存储在文件中. 3.索引建多了会影响增删改效率.(一张表最多允许建16个索引) (下面这张图为计算机组成原理内容,每查询一 ...

  8. mysql suoyin 和锁_Mysql索引与锁

    Mysql索引与锁 Mysql索引与锁 本文以Mysql5.7为例测试. 1:mysql索引方法 Mysql的索引方法分为btree索引和hash索引. hash索引:是通过hash计算后比较,所以只 ...

  9. mysql索引有几种使用索引的好处_mysql索引的类型和优缺点

    mysql索引的类型和优缺点 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针. 注:[1]索引不是万能的!索引可以加快数据检索操作,但 ...

最新文章

  1. linux下的python环境,linux下python环境
  2. POJ1459-Power Network
  3. (译)如何优化cocos2d程序的内存使用和程序大小:第二部分(完)
  4. 轻量级 HTTP(s) 代理 TinyProxy
  5. java 中class相关的问题
  6. 电脑版永恒纪元服务器正在维护,永恒纪元————【维护】1月10日更新维护公告...
  7. 实习成长之路:MySQL五:全局锁和表锁 :给表加个字段怎么有这么多阻碍?
  8. DataGridView分页
  9. (6)Spring框架----Bean生命周期分析(详细)
  10. 迅雷mac版精简安装教程
  11. win7录屏_win7电脑怎么录屏?这个实用工具给你答案
  12. 《大数据之路-阿里巴巴大数据实践》第十六章 数据应用
  13. 一文带你搞懂Python中的文件操作
  14. 哪个大学开python课_2017春Python语言程序设计(天津大学仁爱学院)
  15. 扫描NFC卡,获取卡号存储到本地并可以以Excel形式导出数据
  16. FPGA学习思维导图
  17. Java中文乱码破碎重组_Java 关于中文乱码问题的解决方案与经验
  18. 淘宝详情接口调用示例
  19. CheriABI简介
  20. Django使用WebSocket

热门文章

  1. python使用HanLP进行句法分析实战
  2. 广义线性模型?链接函数?sigmoid和softmax?Logistic处理多分类问题?logistic回归处理超大数据?使用logistic和randomsearch进行组合获取最优参数组合、优缺点
  3. 面向Agent的系统架构
  4. Pacbio 纯三代组装复活草基因组
  5. 北工大计算机学院教授,北工大计算机学院计算机科学与技术导师介绍:杨宇光...
  6. 宝塔显示linux inode,Linux显示inode的信息
  7. linux POSIX 信号集,读书笔记:第10章 Posix信号量 (6)
  8. 如何为Keras中的深度学习模型建立Checkpoint
  9. numpy中的cov(方差计算)简单介绍
  10. 解决tensorflow报错ValueError: Variable conv1/weights already exists, disallowed.