mysql索引的面试题

1.可以使用多少列创建索引?

任何标准表最多可以创建16个索引列。

2.索引的底层实现原理和优化

B+树,经过优化的B+树

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

3. 什么情况下设置了索引但无法使用 

1.以“%”开头的LIKE语句,模糊匹配

2. OR语句前后没有同时使用索引

3. 数据类型出现隐式转化(如varchar不加单引号的话可能会自动转换为int型)

4.简单描述mysql中,索引,主键,唯一索引,联合索引的区别,对数据库的性能有什么影响(从读写两方面)

索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。

普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。

 

普通索引允许被索引的数据列包含重复的值。如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该用关键字UNIQUE把它定义为一个唯一索引。也就是说,唯一索引可以保证数据记录的唯一性。

 

主键,是一种特殊的唯一索引,在一张表中只能定义一个主键索引,主键用于唯一标识一条记录,使用关键字 PRIMARY KEY 来创建。

索引可以覆盖多个数据列,如像INDEX(columnA, columnB)索引,这就是联合索引。

 

索引可以极大的提高数据的查询速度,但是会降低插入、删除、更新表的速度,因为在执行这些写操作时,还要操作索引文件。

 

5.对于关系型数据库而言,索引是相当重要的概念,请回答有关索引的几个问题:

1.索引的目的是什么?
快速访问数据表中的特定信息,提高检索速度
创建唯一性索引,保证数据库表中每一行数据的唯一性。
加速表和表之间的连接

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

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

3.为数据表建立索引的原则有哪些?
在最频繁使用的、用以缩小查询范围的字段上建立索引。

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

4.什么情况下不宜建立索引?
对于查询中很少涉及的列或者重复值比较多的列,不宜建立索引。

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

6.主键、外键和索引的区别?

主键、外键和索引的区别

定义:

 主键–唯一标识一条记录,不能有重复的,不允许为空

 外键–表的外键是另一表的主键, 外键可以有重复的, 可以是空值

 索引–该字段没有重复值,但可以有一个空值

作用:

 主键–用来保证数据完整性

 外键–用来和其他表建立联系用的

 索引–是提高查询排序的速度

个数:

 主键–主键只能有一个

 外键–一个表可以有多个外键

 索引–一个表可以有多个唯一索引

7.你怎么看到为表格定义的所有索引?

 

索引是通过以下方式为表格定义的:

SHOW INDEX FROM
<tablename>;

 

  • 7
    点赞
  • 106
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当谈到MySQL索引面试时,有几个常见的问和概念,我会尽力回答。请记住,以下答案仅供参考。 1. 什么是索引索引是一种数据结构,用于提高数据库查询的速度。它可以让数据库系统更快地定位到所需数据,而不必扫描整个表。 2. MySQL中常见的索引类型有哪些? MySQL常见的索引类型包括主键索引(Primary Key Index)、唯一索引(Unique Index)、普通索引(Index)和全文索引(Full-Text Index)等。 3. 主键索引和唯一索引有何区别? 主键索引是用于唯一标识每一行数据的索引,它必须是唯一且非空的。而唯一索引允许数据列中的值有重复,但是索引列的值必须是唯一的。 4. 什么时候应该使用索引? 当查询的频率高、需要快速定位到特定数据行或避免全表扫描时,使用索引可以提高查询性能。然而,过多或不恰当的索引可能会降低性能。 5. 索引对数据库性能的影响是什么? 索引可以加快查询速度,但同时会导致插入、更新和删除操作变慢,因为每次修改数据时都需要更新索引。过多的索引也会占用磁盘空间。 6. 如何优化索引性能? 可以通过以下方式进行索引性能优化: - 选择合适的索引类型; - 选择适当的索引列; - 避免过多或重复的索引; - 使用覆盖索引减少IO操作; - 定期维护索引,删除不必要的索引。 这些只是一些常见的MySQL索引面试,希望能对你有所帮助。如果你有其他问,请随时提问!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值