面试造火箭,工作拧螺丝,虽然工作时我们都在使用基本的 sql,但是不好意思,面试 90% 都在问原理,例如索引,锁,日志,引擎啊等等。

在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。

如果我们想在图书中查找特定内容,在没有目录的情况下只能逐页翻找。与此类似,当执行下面这样一条SQL语句时,假如没有索引,数据库如何查找到相对应的记录呢?

SELECT * FROM student WHERE name=‘小白’

搜索引擎只能扫描整个表的每一行,并依次对比判断name的值是否等于“小白”。我们知道,单纯的内存运算是很快的,但从磁盘中取数据到内存中是相对慢的,当表中有大量数据时,内存与磁盘交互次数大大增加,这就导致了查询效率低下。

索引的优点如下:

通过创建唯一索引可以保证数据库表中每一行数据的唯一性。

可以大大加快数据的查询速度,这是使用索引最主要的原因。

在实现数据的参考完整性方面可以加速表与表之间的连接。

在使用分组和排序子句进行数据查询时也可以显著减少查询中分组和排序的时间。

既然索引这么好,那么我们是不是尽情使用索引呢?非也,索引优点明显,但相对应,也有缺点:

创建和维护索引组要耗费时间,并且随着数据量的增加所耗费的时间也会增加。

索引需要占磁盘空间,除了数据表占数据空间以外,每一个索引还要占一定的物理空间。

当对表中的数据进行增加、删除和修改的时候,索引也要动态维护,这样就降低了数据的维护速度。

因此,使用索引时要兼顾索引的优缺点,寻找一个最有利的平衡点。

开课吧:MySQL索引的使用知识有哪些?相关推荐

  1. MySQL索引的使用知识有哪些?

    面试造火箭,工作拧螺丝,虽然工作时我们都在使用基本的 sql,但是不好意思,面试 90% 都在问原理,例如索引,锁,日志,引擎啊等等. 在关系数据库中,索引是一种单独的.物理的对数据库表中一列或多列的 ...

  2. 讲真,MySQL索引优化看这篇文章就够了

    本文主要讨论MySQL索引的部分知识.将会从MySQL索引基础.索引优化实战和数据库索引背后的数据结构三部分相关内容,下面一一展开. 一.MySQL--索引基础 首先,我们将从索引基础开始介绍一下什么 ...

  3. 腾讯 WXG 后台开发工程师对 MySQL 索引知识点总结

    知其然知其所以然!本文介绍索引的数据结构.查找算法.常见的索引概念和索引失效场景. 什么是索引? 在关系数据库中,索引是一种单独的.物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中 ...

  4. MySQL 索引知识点总结

    知其然知其所以然!本文介绍索引的数据结构.查找算法.常见的索引概念和索引失效场景. 什么是索引? 在关系数据库中,索引是一种单独的.物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中 ...

  5. MySQL索引面试题汇总

    目录 1.前言 2.索引数据结构分类 3.二叉查找树 4.红黑树(自平衡二叉查找树) 5.B-Tree 6.B+Tree 6.1 B+Tree概述及特点 6.2 B+Tree存放数据示例 6.3 My ...

  6. MySQL索引优化看这篇文章就够了!

    阅读本文大概需要 5 分钟. 来源:cnblogs.com/songwenjie/p/9410009.html 本文主要讨论MySQL索引的部分知识.将会从MySQL索引基础.索引优化实战和数据库索引 ...

  7. MySQL索引知识总结

    对MySQL索引知识的总结笔记. 普通索引 索引是一种数据结构,主要用于性能的提高. 比如我们有一个表t_users,有4个字段: 1 2 3 4 5 6 7 create table t_users ...

  8. Mysql数据库(四)——mysql索引相关知识

    Mysql数据库(四)--mysql索引相关知识 一.索引的概念 二.索引的优缺点 1.优点 2.缺点 三.创建索引的原则 四.索引的分类和创建方法 1.普通索引 ①.直接创建索引 ②.修改表方式创建 ...

  9. ❤『知识集锦』一文搞懂mysql索引!!(建议收藏)

    作者:不吃西红柿 简介:CSDN博客专家.蓝桥签约作者.大数据领域优质创作者. 以我的资历和文凭,将来这个城市的大街,都归我扫.   [系列课程介绍] 『面试知识集锦』系列课程包括以下20个系列,超过 ...

最新文章

  1. readelf小尝试
  2. mxnet java 例子_mxnet(gluon) 实现DQN简单小例子
  3. python算法与数据结构-数据结构中二叉树的介绍
  4. 简述ajax的优缺点
  5. LeetCode刷题实战(43):Multiply Strings
  6. Java-switch选择结构
  7. 大数据之-Hadoop之HDFS_基于JAVA的开发_客户端环境测试---大数据之hadoop工作笔记0055
  8. mybatis中resultType和resultMap的区别
  9. 救命稻草VirtualBox,失之交臂VMware—— 2者的guest OS对 恒通笔记本并口卡的支持
  10. *rock ,scissors ,paperpku 2339
  11. 前端应届生面试技巧,没有项目经验怎么应对?
  12. 计算机的内存、外存、主存、辅存
  13. CentOS 使用二进制部署 Kubernetes 1.13集群
  14. Flutter 报错:Could not resolve io.flutter:flutter_embedding_debug:1.0.0-ee76268252c22f5c11e82a7b87423c
  15. 钉钉在线课堂回看发给对方观看需要这样做
  16. 关于GIS的一些感悟·思考
  17. 织梦cms是什么-织梦CMS免费搭建工具只需要输入域名
  18. 基于proteus的51单片机仿真实例二、关于proteus
  19. 用C语言实现求最大公因数和最小公倍数
  20. 自定义view,移动view的时候抖动很厉害的解决方案

热门文章

  1. 如何理解FPGA的配置状态字寄存器Status Register
  2. Scrapy中的Spider
  3. hdu1113 Word Amalgamation(详解--map和string的运用)
  4. Ubuntu下好的PDF阅读器介绍
  5. 线段树详解(转)这个博客很棒~
  6. python自学记录 pydev安装
  7. HDU 1027 全排列
  8. (一)卡尔曼滤波算法简介
  9. 数据结构笔记(五)-- 循环链表的实现
  10. java获取当月1号 的时间chuo_java获取时间戳的方法