1.什么是MySQL索引?
1: 官方上面说索引是帮助MySQL高效获取数据的数据结构,通俗点的说,数据库索引好比是一本书的目录,可以直接根据页码找到对应的内容,目的就是为了加快数据库的查询速度。 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
2:一种能帮助mysql提高了查询效率的数据结构:索引数据结构。
2.索引原理
索引的存储原理大致可以概括为一句话:以空间换时间。
数据库在未添加索引进行查询的时候默认是进行全文搜索,也就是说有多少数据就进行多少次查询,然后找到相应的数据就把它们放到结果集中,直到全文扫描完毕。
3.索引的好处和代价
好处就是给我们的查找提高了效率咯
但也要付出一定的代价
1.消耗了更多空间
当你去看很厚的小说的时候,你会发现目录,同样,目录也要占用空间,所以索引会消耗更多的空间.
2.虽然索引提高了查询速率,但是降低了 增加,删除,修改的效率。
虽然说要付出一定的代价吧,但跟好处相比,这点代价是值得的,因为大多数时候你都在查询,修改的频率的很低的!
4.索引的分类
主键索引:primary key
- 设定为主键后,数据库自动建立索引,InnoDB为聚簇索引,主键索引列值不能为空。
唯一索引:
- 索引列的值必须唯一,但允许有空值,但只允许有一个空值。
复合索引:
- 一个索引可以包含多个列,多个列共同构成一个复合索引。
全文索引:
- 全文索引类型为FULLTEXT,在定义索引的列上支持值的全文查找允许在这些索引列中插入重复值和空值。全文索引可以在Char、VarChar 上创建。
前缀索引:
- 在文本类型为char、varchar、text类列上创建索引时,可以指定索引列的长度,但是数值类型不能指定。
5.创建索引
普通索引
这是最基本的索引,它没有任何限制。它的创建方法:
CREATE INDEX indexName ON table_name (column_name)
唯一索引
它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它的创建方式:
CREATE UNIQUE INDEX indexName ON mytable(username(length))
6. 使用ALTER 命令添加和删除索引
有四种方式来添加数据表的索引:
- ALTER TABLE tbl_name ADD PRIMARY KEY (column_list): 该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL。
- ALTER TABLE tbl_name ADD UNIQUE index_name (column_list): 这条语句创建索引的值必须是唯一的(除了NULL外,NULL可能会出现多次)。
- ALTER TABLE tbl_name ADD INDEX index_name (column_list): 添加普通索引,索引值可出现多次。
- ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list): 该语句指定了索引为 FULLTEXT ,用于全文索引。