本质:提高数据库性能的一种特殊文件

  • 基础知识
  • 面试题
    • 一、索引的底层实现原理和优化
    • 二、
    • 三、什么情况下设置了索引但无法使用?
    • 索引的类型有哪些,他们的区别是什么?

基础知识

概念:

索引是一种特殊的文件,包含着对数据表里所有记录的引用指针,可以对表中的一系列或多列创建索引,并指定索引的类型,各类索引有各自的数据结构实现。
数据库中的表,数据,和索引之间的关系,类似于书架上的图书,书籍内容和书籍目录的关系。

作用:

索引的作用类似于书籍目录,可以快速定位,检索数据。
对于提高数据库的性能有很大帮助。

使用场景:(空间换取时间)

  1. 数据量较大,且经常对这些列进行条件查询。
  2. 对该数据库表的插入操作,及对这些列的修改操作频率较低。
  3. 磁盘空间充足。
    注意:如果非条件查询列,或者经常插入,修改操作,或者磁盘空间不足,不考虑创建索引。

创建过程语法:
创建主键约束(PRIMARY KEY)、唯一约束(UNIQUE)、外键约束(FOREIGN KEY)时,会自动创建对应列的索引。

查看索引:

show index from 表名;
案例:
show index from student;

创建索引——对于非主键、非唯一约束、非外键的字段,可以创建普通索引。


creat index 索引名 on 表名(字段名:)
案例:创建班级表中,name字段的索引。
creat index idx_classes_name on classes(name);

删除索引

drop index 索引名 on 表名;
案例:删除班级表中的name字段
drop index idx_classes_name on classes;

面试题

一、索引的底层实现原理和优化

B+树,经过优化的B+树,主要是在所有的叶子结点中增加了指向下一个叶子节点的指针,因此InnoDB建议为大部分表使用默认自增的主键作为主索引。

二、

a )、索引的目的是什么?

快速访问数据表中的特定信息,提高检索速度

创建唯一性索引,保证数据库表中每一行数据的唯一性。

加速表和表之间的连接

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

b)、索引对数据库系统的负面影响是什么?

创建索引和维护索引需要耗费时间,这个时间随着数据量的增加而增加;索引需要占用物理空间,不光是表需要占用数据空间,每个索引也需要占用物理空间;当对表进行增、删、改、的时候索引也要动态维护,这样就降低了数据的维护速度。

c)、为数据表建立索引的原则有哪些?

在最频繁使用的、用以缩小查询范围的字段上建立索引。

在频繁使用的、需要排序的字段上建立索引

d)、 什么情况下不宜建立索引?

对于查询中很少涉及的列或者重复值比较多的列,不宜建立索引。

对于一些特殊的数据类型,不宜建立索引,比如文本字段(text)等

三、什么情况下设置了索引但无法使用?

以“%”开头的LIKE语句,模糊匹配
OR语句前后没有同时使用索引
数据类型出现隐式转化(如varchar不加单引号的话可能会自动转换为int型)

索引的类型有哪些,他们的区别是什么?

索引的类型有:B树索引,位图索引,函数索引等。

B树索引 主键和唯一性约束字段的B树索引,效率几乎和海量数据没有关系。键值重复率低的字段比较适合使用B树索引。

位图索引 键值重复率高的字段比较适合使用位图索引。 count、and、or、in这些特定的操作更适合位图索引。 DML操作比较多的表不适合使用位图索引。

复合索引 在where条件中必须带驱动列,复合索引才会使用。键值重复率低(DISTINCT数量多)的字段放在前面。

谈谈对数据库索引的了解—这些就很重要!!附相关高频面试题。相关推荐

  1. 3层b+树索引访问磁盘次数_【112期】面试官:为什么选择B+树作为数据库索引结构?谈谈你的理解

    本文同步Java知音社区,专注于Java 阶段汇总集合:++小Flag实现,一百期面试题汇总++ 背景 首先,来谈谈B树.为什么要使用B树?我们需要明白以下两个事实: [事实1] 不同容量的存储器,访 ...

  2. oracle数据库索引介绍,SQL Server和Oracle数据库索引介绍

    SQL Server和Oracle数据库索引介绍 SQL Server 和 Oracle 数据库索引介绍1 SQL Server 中的索引 索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行 ...

  3. 数据库索引-基本知识

    为什么80%的码农都做不了架构师?>>>    数据库索引--基本知识 有许多因素会影响数据库性能.最明显的是数据量:您拥有的数据越多,数据库的速度就越慢.虽然有很多方法可以解决性能 ...

  4. 数据库索引的工作原理及其种类

    数据库索引的工作原理及其种类 数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询.更新数据库表中数据.索引的实现通常使用B树及其变种B+树. 在数据之外,数据库系统还维护着满足特定查找算 ...

  5. SQL Server调优系列进阶篇(如何维护数据库索引)

    前言 上一篇我们研究了如何利用索引在数据库里面调优,简要的介绍了索引的原理,更重要的分析了如何选择索引以及索引的利弊项,有兴趣的可以点击查看. 本篇延续上一篇的内容,继续分析索引这块,侧重索引项的日常 ...

  6. 数据库索引类型及实现方式

    1.索引定义 数据库索引好比是一本书前面的目录,能加快数据库的查询速度.索引是对数据库表中一个或多个列(例如,employee 表的姓氏 (lname) 列)的值进行排序的结构.如果想按特定职员的姓来 ...

  7. 数据库索引的作用和优点缺点

    原文:数据库索引的作用和优点缺点 为什么要创建索引呢?这是因为,创建索引可以大大提高系统的性能.  第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性.  第二,可以大大加快 数据的检索速 ...

  8. 数据库索引是什么?新华字典来帮你!

    点击蓝色"程序猿DD"关注我哟 来源:https://zhuanlan.zhihu.com/p/57359378 学过服务器端开发的朋友一定知道,程序没有数据库索引也可以运行.但是 ...

  9. 大于小于优化_以MySQL为例,详解数据库索引原理及深度优化

    本文内容主要来源于互联网上主流文章,只是按照个人理解稍作整合,后面附有参考链接. 一.摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引 ...

最新文章

  1. android 技能标签功能_android开发工程师必备技能
  2. 计算机有什么知识,计算机基础知识有什么
  3. wchar_t 的输出问题
  4. 【转载】WinCE中的RAM-Based Registry与HIVE-Based Registry
  5. P1501 [国家集训队]Tree II
  6. 卸载idea2020删除以前的配置_推荐一款只有5M大小的绿色良心的卸载工具!
  7. mysql主从配置实例
  8. 浅谈最近公共祖先(LCA)
  9. Widnows开启休眠
  10. 云上DevOps-CodePipeline,Packer和Terraform集成实践探索
  11. Java实用教程-Java基本语法-Java程序的构成
  12. 计算机编程常用术语英文词汇
  13. 视频格式转换库--libyuv的简介与编译
  14. Emmagee和GT
  15. MySQL8.0无法启动3534的解决方法
  16. 查信用、查企业的国家平台
  17. 【地平线旭日X3派试用体验】基于MIPI Camera的目标检测 web 端展示,全流程(第三节)
  18. 【树莓派】从零搭建DAS服务器,挂载扩容硬盘,实现文件存储与自动下载
  19. 【性能提升神器】STRAIGHT_JOIN
  20. Box3 代码教程 (一)

热门文章

  1. 乐鑫Esp32学习之旅11 入门 乐鑫esp-adf 音频框架开发,造一个蓝牙耳机,实现切换歌曲,获取歌曲信息等功能。(附带Demo)
  2. eclipse 创建项目报项目存在的解决方案(Invalid project name: Project xxx already exists)...
  3. Chrome 清除特定网站的 cookie
  4. Unity插件学习(五) ------ 本地存储Easy Save3
  5. vue-easytable 单元格样式设置
  6. 简单因式分解100道及答案_初中数学因式分解练习题及答案.doc
  7. EasyUIcombobox回填
  8. SeekBarVolumizer.java
  9. 欧科云链荣获人民网匠心技术奖,科技创新共造企业发展“强引擎”
  10. mysql 交集,并集,差集