MySQL索引

    MySQL索引的基础和类型

      索引的基础:索引类似于书籍的目录,要想找到一本书的某个特定篇章,需要查找书的目录,定位对应的页码

      存储引擎使用类似的方式进行数据查询,先去索引当中找到对应的值,然后根据匹配的索引找到对应的数据行。

    索引对性能的影响

      大大减少服务器需要扫描的数据量

      帮助服务器避免排序和临时表

      将随机I/O变为顺序I/O

      大大提高查询速度,降低写的速度,占用磁盘

    索引的使用场景

      对于非常小的表,大部分情况下全表扫描效率更高

      中到大型表,索引非常有效

      特大型的表,建立和使用索引的代价将随之增长,可以使用分区技术来解决

    索引类型

      索引有很多种类型,都是实现贼存储引擎层的

      普通索引:最基本的索引,没有任何约束限制

      唯一索引:与普通索引类似,但具有唯一性约束

      主键索引:特殊的唯一索引,不允许有空值

      面试考点:唯一索引和主键索引的区别?

        一个表只能有一个主键索引,可以有多个唯一索引

        主键索引一定是唯一索引,唯一索引不是主键索引

        主键可以与外键构成参照完整性约束,防止数据不一致

      组合索引:将多个列组合在一起创建索引,可以覆盖多个列

      外键索引:只有InnoDB类型的表才可以使用外键索引,保证数据的一致性,完整性和实现级联操作

      全文索引:MySQL自带的全文索引只能用于MyISAM存储引擎,并且只能对英文进行全文检索。

    MySQL索引的创建原则

      1、最适合索引的列是出现在WHERE子句中的列,或连接字句中的列而不是出现在SELECT关键字后的列

      2、索引列的基数越大,索引的效果越好

      3、对字符串进行索引,应该制定一个前缀长度,可以节省大量的索引空间

      4、根据情况创建复合索引,复合索引可以提高查询效率

      5、避免创建过多索引,索引会额外占用磁盘空间,降低写操作效率

      6、主键尽可能选择较短的数据类型,可以有效减少索引的磁盘占用,提高查询效率

    MySQL索引的注意事项

      1、复合索引遵循前缀原则

      2、like查询,%不能在前,可以使用全文索引

      3、column  is null  可以使用索引

      4、如果MySQL估计使用索引比全表扫描更慢,会放弃使用索引

      5、如果or前的条件中的列有索引,后面的没有,索引都不会被用到

      6、列类型是字符串,查询时一定要给值加引号,否则索引失效

转载于:https://www.cnblogs.com/dcrq/p/11078167.html

PHP面试 MySQL创建高性能索引考点相关推荐

  1. 高性能Mysql——创建高性能索引详解

    索引(在MySQL中也叫做"键(key)")是存储引擎用于快速找到记录的一种数据结构.这是索引的基本功能,除此之外,本章还将讨论索引其他一些方面有用的属性. 索引对于良好的性能非常 ...

  2. PHP面试MySQL数据库的索引

    你好,是我琉忆,PHP程序员面试笔试系列图书的作者. 本周(2019.3.4至3.8)的一三五更新的文章如下: 周一:PHP面试MySQL数据库的基础知识 周三:PHP面试MySQL数据库的索引 周五 ...

  3. 高性能MySQL(3)——创建高性能索引

    索引对于良好的性能非常关键.尤其是当表中的数据量越来越大时,索引对性能的影响愈发重要. 一.索引的类型 在MySQL中,索引是在存储引擎层而不是服务器层实现的.所以没用统一的索引标准,不同存储引擎的索 ...

  4. MySQL高级 —— 高性能索引

    引言 最近一直在抱着<高性能MySQL(第三版)>研究MySQL相关热点问题,诸如索引.查询优化等,这阶段的学习是前一段时间MySQL基础与官方的"阅读理解"的进一步延 ...

  5. 高性能MySQL-3rd-(五)创建高性能索引

    2019独角兽企业重金招聘Python工程师标准>>> /* * -------------------------------------------------------- * ...

  6. mysql 创建唯一索引_Mysql创建索引

    零:文章概要 这篇文章,主要是和大家一起去了解 索引,然后一起使用CREATE INDEX语法给数据库中的表创建一个索引. 一:先拿电话薄做个类比 假如,一个电话薄里面包含了一个城市的所有人的姓名和电 ...

  7. mysql 创建job_MySQL 索引创建

    MySQL 索引创建 简介:在本教程中,您将了解索引以及如何使用MySQL CREATE INDEX语句向表中添加索引. 电话簿比喻 假设您有一本电话簿,其中包含城市中所有人的姓名和电话号码.假设你想 ...

  8. mysql 创建唯一索引_Mysql普通索引和唯一索引的选择分析

    假设一个用户管理系统,每个人注册都有一个唯一的手机号,而且业务代码已经保证了不会写入两个重复的手机号.如果用户管理系统需要按照手机号查姓名,就会执行类似这样的 SQL 语句: select name ...

  9. mysql 创建聚集索引_索引为什么会加快Mysql的查询速度?

    为什么用了索引之后,查询就会变快? 相信很多程序员朋友对数据的索引并不陌生,最常见的索引是 B+ Tree 索引,索引可以加快数据库的检索速度,但是会降低新增.修改.删除操作的速度,一些错误的写法会导 ...

最新文章

  1. docker 安装 minio
  2. input自适应_深度残差网络+自适应参数化ReLU(调参记录18)Cifar10~94.28%
  3. Log4J入门教程(三) web项目的log4j配置
  4. response对象设置返回状态_postman 设置全局变量
  5. go设置后端启动_为什么 Rubyists 应该考虑学习 Go
  6. 必须掌握的八种排序(7-8)--归并排序,基数排序
  7. python自动处理下载的英文字幕
  8. 正则匹配获取中括号中的内容
  9. 【多元统计分析】01.多元统计的基础
  10. 2019年面临的网络安全威胁有哪些
  11. java根据日期计算星期几_利用Java计算某个日期是星期几
  12. xcode 免cleanup build
  13. python的三种将整数转换成二进制的方法
  14. hexo之icarus主题的美化修改以及简单的SEO配置
  15. 蓝桥耐摔指数 JAVA暴解(摔手机)
  16. 毛刺现象 java_硬件毛刺
  17. android实现类似在短信图标右上角显示短信个数的效果
  18. 子类构造函数中super()方法的理解
  19. Java各种视频教学(转)
  20. orcale报错 无效数字

热门文章

  1. 华为P30系列机身侧面照曝光 摄像头仍然“凸起”...
  2. Fast-SCNN 多分支结构共享低级特征的语义分割网络 (一)
  3. onvif学习笔记7:一个C++封装的onvif代码的阅读笔记
  4. cas登录后怎么直接到我们系统_当我们购买服务器后,那么服务器的操作系统该怎么选择呢?...
  5. 【算法】平衡二叉树 Avl 树
  6. 【Elasticsearch】 es watcher 视频 笔记
  7. 【Elasticsearch】腾讯万亿级 Elasticsearch 内存效率提升解密 源码级别 性能优化
  8. 【Elasticsearch】如何在 Elasticsearch 中查找并移除重复文档
  9. 【Elasticsearch】elasticsearch 压缩索引 shrink
  10. 【Elasticsearch】 Elasticsearch 多字段查询 best_fields、most_fields、cross_fields,傻傻分不清楚?