mysql索引的四种类型:主键索引、唯一索引、普通索引和全文索引。

主键索引:

主键是一种唯一性索引,但它必须指定为PRIMARY KEY,每个表只能有一个主键。

唯一索引:

索引列的所有值都只能出现一次,即必须唯一,值可以为空。

普通索引 :

基本的索引类型,值可以为空,没有唯一性的限制。

全文索引:

全文索引的索引类型为FULLTEXT。全文索引可以在varchar、char、text类型的列上创建。可以通过ALTER TABLE或CREATE INDEX命令创建。对于大规模的数据集,通过ALTER TABLE(或者CREATE INDEX)命令创建全文索引要比把记录插入带有全文索引的空表更快。MyISAM支持全文索引,InnoDB在mysql5.6之后支持了全文索引。

索引的机制

为什么我们添加完索引后查询速度为变快?

传统的查询方法,是按照表的顺序遍历的,不论查询几条数据,mysql需要将表的数据从头到尾遍历一遍

在我们添加完索引之后,mysql一般通过BTREE算法生成一个索引文件,在查询数据库时,找到索引文件进行遍历(折半查找大幅查询效率),找到相应的键从而获取数据

3.常见问题

多大的数据量下建索引会有性能的差别?

什么样的情况下该对字段建索引?

4.解决方案

1、表的主键、外键必须有索引;

2、数据量超过300的表应该有索引;

3、经常与其他表进行连接的表,在连接字段上应该建立索引;

4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;

5、索引应该建在选择性高的字段上;

5.编码实战

让我们来实际操作一下。

6.扩展思考

为什么加索引后会使写入、修改、删除变慢?

索引能让数据库查询数据的速度上升, 而使写入数据的速度下降,原因很简单的, 因为平衡树这个结构必须一直维持在一个正确的状态, 增删改数据都会改变平衡树各节点中的索引数据内容,破坏树结构, 因此,在每次数据改变时, DBMS必须去重新梳理树(索引)的结构以确保它的正确,这会带来不小的性能开销,也就是为什么索引会给查询以外的操作带来副作用的原因。

7.参考文献

https://www.cnblogs.com/aspwebchh/p/6652855.html

8.更多讨论

1.like 不能用索引?

尽量减少like,但不是绝对不可用,“xxxx%” 是可以用到索引的,

想象一下,你在看一本成语词典,目录是按成语拼音顺序建立,查询需求是,你想找以 “一"字开头的成语(“一%”),和你想找包含一字的成语(”%一%")

除了like,以下操作符也可用到索引:

,>=,BETWEEN,IN

<>,not in ,!=则不行

2.多列查询该如何建索引?

一次查询只能用到一个索引,所以 首先枪毙 a,b各建索引方案

a还是b? 谁的区分度更高(同值的最少),建谁!

当然,联合索引也是个不错的方案,ab,还是ba,则同上,区分度高者,在前

3.一次查询能用多个索引吗?

不能

BY : 西安分院 赵立鼐

视频链接:https://v.qq.com/x/page/u0717zp67w3.html

ppt:https://it-xzy.github.io/JAVA-NEW/20180925-A-java-1.html#/

---------------------

作者:zln313

来源:CSDN

原文:https://blog.csdn.net/zln313/article/details/82722200

mysql 索引代码_mysql索引相关推荐

  1. mysql范围条件_MySQL 索引及优化实战(一)

    mysql 随着系统用户量的不断增加,MySQL 索引的重要性不言而喻,对于后端工程师,只有在了解索引及其优化的规则,并应用于实际工作中后,才能不断的提升系统性能,开发出高性能.高并发和高可用的系统. ...

  2. mysql精讲_Mysql 索引精讲

    开门见山,直接上图,下面的思维导图即是现在要讲的内容,可以先有个印象- 常见索引类型(实现层面) 索引种类(应用层面) 聚簇索引与非聚簇索引 覆盖索引 最佳索引使用策略 1.常见索引类型(实现层面) ...

  3. mysql索引选择_MySQL 索引选择原则

    目的 MySQL查询优化器是基于代价(cost-based)的查询方式.因此,在查询过程中,最重要的一部分是根据查询的SQL语句,依据多种索引,计算查询需要的代价,从而选择最优的索引方式生成查询计划. ...

  4. mysql 索引 二_MySql索引(二)

    所有MySQL列类型可以被索引.根据存储引擎定义每个表的最大索引数和最大索引长度. 所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节.大多数存储引擎有更高的限制. 索引的存储类型目前只 ...

  5. mysql 索引方法_mysql索引方式

    /* 所有MySQL列类型可以被索引.根据存储引擎定义每个表的最大索引数和最大索引长度. 所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节.大多数存储引擎有更高的限制. 索引的存储类型 ...

  6. mysql 子查询索引失效_mysql 索引失效的情况

    索引失效的几种情况 1.如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因) 要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引 2.对于多列索引,不是使用 ...

  7. mysql gis index 索引原理_Mysql 索引原理及优化

    Mysql 索引原理及优化 什么是索引 为什么需要索引? 索引是数据表种一个或者多个列进行排序的数据结构 索引能够大幅提升检索速度 创建.更新索引本身也会耗费空间和时间 查找结构进化史 线性查找:一个 ...

  8. mysql多索引结构_MySQL 索引结构

    谈到 MYSQL 索引服务端的同学应该是熟悉的不能再熟悉,新建表的时候怎么着都知道先来个主键索引,对于经常查询的列也会加个索引加快查询速度.那么 MYSQL 索引都有哪些类型呢?索引结构是什么样的呢? ...

  9. mysql的索引优化_MySQL索引优化与分析(重要)

    建表SQL CREATE TABLE staffs ( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR (24) NULL DEFAULT '' COM ...

最新文章

  1. eShopOnContainers 知多少[8]:Ordering microservice
  2. 利用Use Case为系统行为建模(2)
  3. 《Python和Pygame游戏开发指南》——1.12 图书中的文本折行
  4. Treemap and Treeset java 实现
  5. java中jsp页面foreach遍历输出的使用
  6. windows 下Android的开发准备
  7. CentOS 修改IP地址, DNS, 网关
  8. 对C++继承,封装,多态的理解
  9. spring3.1声明式事务管理
  10. VSCODE: 快速生成html框架
  11. Linux下正则表达式匹配性能
  12. SurfaceView 实现 转盘抽奖
  13. IT桌面运维常识系列 - MDT
  14. 朴素贝叶斯python实现预测_Python朴素贝叶斯预测.PDF
  15. mysql analyze_技术分享 | MySQL EXPLAIN ANALYZE
  16. 微信公众号运营,如何有效的推广
  17. CF小组训练赛 Holiday 19
  18. java基础 第一章 对象入门
  19. sa387gr11cl2相当于什么材料,sa387gr11cl2对应国内材质
  20. Java web项目利用POI导出EXCEL表格

热门文章

  1. laydate时间控件 (开始日期、结束日期)
  2. 计算机e的指数怎么计算方法,e^x的基本算法——剥离大指数法
  3. Kafka分区分配策略以及重平衡过程总结
  4. 黑白照片怎么上色?学会这招轻松解决
  5. 直接使用word模板生成word文件
  6. 开学“收心”指南来了
  7. 研究生毕业2w的工作是什么样的?
  8. 让Windows无缝地跑在Mac上,VMware发布VMware Fusion 7
  9. oracle 11g dul,dul 10支持oracle 11g r2
  10. 文智背后的奥秘系列篇——情感分类