1、以下关于 InnoDB 引擎 MySQL 索引的描述,正确的是? ABCD
A、mysql会按照聚集索引顺序存储表数据,当没有显示定义聚集索引时,存储的数据可能是无序的
B、二级索引会保存聚集索引中的全部列值,因此聚集索引列越宽,二级索引越大
C、聚集索引不一定是主键
D、主键一定是聚集索引
【答案解析】MySQL以主键作为聚集索引,如果没有定义主键,会选择一个非空的唯一索引替代,如果没有这样的索引,会隐式的定义一个主键作为聚集索引。 MySQL会按照聚集索引顺序存储表数据,没有定义聚集索引时会自动采用一个较短的列作为排序。当数据变动后,表中数据可能是无序的。 聚集索引每个叶子节点都包含了索引列的值以及所有的剩余列; 二级索引会保存聚集索引的列值,聚集索引列越宽,二级索引越大。
2、RDBMS是什么? D
A、Relational Database Management Speed
B、Relational Database Manipulate Systems
C、Rela Database Management Systems
D、Relational Database Management Systems
3、关系型数据库中View视图的作用? D
A、存储相同数据结构的数据的集合
B、展示不同数据结构的数据的集合
C、存储不同数据结构的数据的集合
D、展示相同数据结构的数据的集合
1、索引的结构
索引结构有二叉树索引结构、B树索引结构、B+树索引结构、Hash索引结构、R-Tree(空间索引)、和Full-Text(全文索引)等等,每一种中都有各自的特点。其中二叉树和B-Tree索引和B+Tree索引类似,但是相比性能要比B+Tree低。在MySQL的InnoDB存储引擎中采用的就是B+Tree索引
| 索引结构 | 描述 |
|---|---|
| B+Tree | 最常见的索引类型,大部分引擎都支持B+树索引 |
| Hash | 底层数据结构是用哈希表实现,只有精确匹配索引列的查询才有效,不支持范围查询 |
| R-Tree(空间索引) | 空间索引是 MyISAM 引擎的一个特殊索引类型,主要用于地理空间数据类型,通常使用较少 |
| Full-Text(全文索引) | 是一种通过建立倒排索引,快速匹配文档的方式,类似于 Lucene, Solr, ES |
| 索引 | INNODB | MYISAM | MEMORY |
|---|---|---|---|
| B+Tree索引 | 支持 | 支持 | 支持 |
| Hash索引 | 不支持 | 不支持 | 支持 |
| R-Tree索引 | 不支持 | 支持 | 不支持 |
| Full-text | 5.6版本后支持 | 支持 | 不支持 |
2、全文索引
全文索引主要用来查找文本中的关键字,而不是直接与索引中的值相比较。fulltext索引跟其它索引大不相同,它更像是一个搜索引擎,而不是简单的where语句的参数匹配。fulltext索引配合match against操作使用,而不是一般的where语句加like。
它可以在create table,alter table ,create index使用,不过目前只有char、varchar,text 列上可以创建全文索引。正常情况下我们也不会使用到全文索引,因为这不是mysql的专长。
3、空间索引
空间索引是对空间数据类型的字段建立的索引,MYSQL中的空间数据类型有4种,分别是GEOMETRY、POINT、LINESTRING、POLYGON。MYSQL使用SPATIAL关键字进行扩展,使得能够用于创建正规索引类型的语法创建空间索引。
创建空间索引的列,必须将其声明为NOT NULL,空间索引只能在存储引擎为MYISAM的表中创建。空间索引一般是用不到了,了解即可。
索引的数据结构
4、B+Tree
innodb默认索引数据结构是B+Tree,什么是B+Tree呢,它的全名叫做平衡多路查找树PLUS。他是由平衡二叉树查找树(AVL树)演化而来




