MySQL索引-面试题

原创
2017/03/19 09:45
阅读数 324

1、索引可以加快数据检索操作,但会使数据修改操作变慢。每修改数据记录,索引就必须刷新一次。为了在某种程序上弥补这一缺陷,许 多SQL命令都有一个DELAY_KEY_WRITE项。这个选项的作用是暂时制止MySQL在该命令每插入一条新记录和每修改一条现有之后立刻对索引进 行刷新,对索引的刷新将等到全部记录插入/修改完毕之后再进行。在需要把许多新记录插入某个数据表的场合,DELAY_KEY_WRITE选项的作用将非 常明显。另外,索引还会在硬盘上占用相当大的空间。因此应该只为最经常查询和最经常排序的数据列建立索引。注意,如果某个数据列包含许多重复的内 容,为它建立索引就没有太大的实际效果。

2、MySQL索引的特点:提高查询速度、索引不会包含有null值的列

3、索引包括普通索引、唯一索引、主键索引、组合索引。没有外键索引这个说法。

4、在取值重复率比较高的列上,适合创建位图索引,位图索引适合于低基数情况。

5、有关mysql索引描述中,InnoDB存储引擎并不支持全文索引。

6、MySQL数据库中建立索引的常用规则:1、表的主键、外键必须有索引,2、经常与其他表进行连接的表,在连接字段上应该建立索引,3、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引,4、索引应该建在选择性高的字段上。

7、索引可以加快数据库的检索速度,降低了数据表数据的维护任务性能。

唯一索引:与"普通索引"类似,不同的就是:索引列的值必须唯一,但允许有空值。
主键索引:它 是一种特殊的唯一索引,不允许有空值。
全文索引:仅可用于 MyISAM 表,针对较大的数据,生成全文索引很耗时好空间。
组合索引:为了更多的提高mysql效率可建立组合索引,遵循“最左前缀”原则。

8、创建索引使用create index关键字,优点是使得查询指定列更加高效。

9、MySQL的索引包括:普通索引、全文索引(FULLTEXT) 、唯一索引、单列索引、多列索引、组合索引等。

10、所有的索引都不是必须的,WHERE和ORDER BY子句中经常使用的字段都应该添加索引,字段内容经常变化的列添加索引反而降低性能。

11、mysql删除索引的语句:drop index indexname

12、位图索引是Oracle中的索引分类,在mysql中并不存在。

索引分为两类,聚合索引和非聚合索引,
操作数据时,增删改操作都会先将索引移除再操作数据
查询语句一次只会使用一个索引,
索引查询时不会将null值包含再内

13、索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。

14、索引可以增加、删除,但是没有修改操作。

引用索引的优点有:
保证数据库表中每一行数据的唯一性。
可以加快数据的检索速度,这也是创建索引的最主要的原因。
可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
在使用分组和排序 子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

1)不要有超过5个以上的表连接(JOIN)
2)考虑使用临时表或表变量存放中间结果。
3)少用子查询
4)视图嵌套不要过深,一般视图嵌套不要超过2个为宜。
以上是MySql索引优化的原则。

15、索引可以提高查询效率,可以避免进行全表的数据扫描。

1.虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。
2.建立索引会占用磁盘空间的索引文件一般情况这个问题不太严重,但如果你在一个大表上创建了多种组合索引,索引文件的会膨胀很快。

(注:如以上资料出错,欢迎指正。)

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部