数据库索引面试题有哪些?常见的数据库索引面试题

在Java面试中,数据库索引也是常问的知识点,索引是对数据库表的一列或者多列的值进行排序一种结构,使用索引可以快速访问数据表中的特定信息。那下面我们就给大家分享一些常见的数据库索引面试题!

1.索引的种类有哪些?

(1)主键索引:数据列不允许重复,不能为NULL,一个表只能有一个主键索引

(2)组合索引:由多个列值组成的索引。

(3)唯一索引:数据列不允许重复,可以为NULL,索引列的值必须唯一的,如果是组合索引,则列值的组合必须唯一。

(4)全文索引:对文本的内容进行搜索。

(5)普通索引:基本的索引类型,可以为NULL。

2.索引的使用场景有哪些?

(1)对于中大型表建立索引非常有效,对于非常小的表,一般全部表扫描速度更快些。

(2)对于超大型的表,建立和维护索引的代价也会变高,这时可以考虑分区技术。

(3)如何表的增删改非常多,而查询需求非常少的话,那就没有必要建立索引了,因为维护索引也是需要代价的。

(4)一般不会出现再where条件中的字段就没有必要建立索引了。

(5)多个字段经常被查询的话可以考虑联合索引。

(6)字段多且字段值没有重复的时候考虑唯一索引。

(7)字段多且有重复的时候考虑普通索引。

3.索引的设计原则是什么?

(1)最适合索引的列是在where后面出现的列或者连接句子中指定的列,而不是出现在SELECT关键字后面的选择列表中的列。

(2)索引列的基数越大,索引的效果越好,换句话说就是索引列的区分度越高,索引的效果越好。比如使用性别这种区分度很低的列作为索引,效果就会很差,因为列的基数最多也就是三种,大多不是男性就是女性。

(3)尽量使用短索引,对于较长的字符串进行索引时应该指定一个较短的前缀长度,因为较小的索引涉及到的磁盘I/O较少,并且索引高速缓存中的块可以容纳更多的键值,会使得查询速度更快。

(4)尽量利用最左前缀。

(5)不要过度索引,每个索引都需要额外的物理空间,维护也需要花费时间,所以索引不是越多越好。

4.Mysql怎么增加一个索引?

创建索引:create index idx1 on table(col1, col2, col3);

添加索引:alter table tablename add index indexname(col1, col2);

其实每一个知识点,我们都要掌握好基础,然后再进行知识拓展,这样在java面试中就会很顺利,大大提高面试通关率!最后大家如果想要了解更多Java面试题知识,敬请关注奇Q工具网。

推荐阅读:

json格式如何转excel?json数据转换怎么操作?

线程池面试题有哪些?线程池面试常见问题

java程序员怎么才能进大厂?java程序员进大厂诀窍!