MySQL之《索引》
文章目录
一、索引由何而来?
在普遍的查询中要求越高速度就越缓慢、因此索引运营而生。
二、索引是什么?
由一、我们get到:索引就是加快我们检索速度的一种方式,抽象的来说它是一种理念,实际它真的是方便。
举个例子:就好比如我们生活中查字典首先都会去找它的拼音,同理,索引就是干这个的。
二、它有什么作用?
加快查询速度:根据索引分组和排序,可以加快分组和排序。
三、索引的好处?(优势、劣势)
优势: 加快检索速度,大大提高工作效率。
劣势:
- 索引本身也是一个表,因此也会占用储存空间。
- 索引的维护和创建需要时间成本,成本会随数据量增大而增大。
- 构建索引会降低数据表的修改操作(删除、添加、修改),因为在修改数据表的同时还需修改索引表。
四、怎样使用索引?
创建索引
建(添加)索引
方式一、(在创建表时候创建索引)
index表示索引,myindex表示定义的索引名称。
CREATE TABLE mytable(
ID INT NOT NULL,
username VARCHAR(16) NOT NULL,
INDEX myindex (username(16))
);
方式二、(在创建表之后创建索引)
语法:create index 索引名字 on 表名 (要添加索引的字段名(字段长度))
CREATE INDEX myindex ON mytable(username(16));
或者
ALTER table mytable ADD INDEX myindex(username)
查看索引
语法:show index from 表名
DROP INDEX myindex ON mytable;
或者ALTER TABLE mytable DROP INDEX myindex;
删除索引
关键字:drop或者alter
语法:drop index 索引名字 on 表名
DROP INDEX myindex ON mytable;
或者ALTER TABLE mytable DROP INDEX myindex;
五、索引分类
常见的索引有:主键索引、唯一索引、普通索引、全文索引、组合索引。
- 主键索引: 即主索引,根据主键建立索引,不允许重复、不允许为空。
- 唯一索引: 用来建立索引的列的值必须是唯一的,允许空值。
- 普通索引: 用表中的普通列构建的索引,没有任何限制。
- 全文索引: 用大文本对象的列构建的索引。
- 组合索引: 用多个列组合构建的索引,这个列中的值不允许为空值。
六、怎样判断需要用不用索引?
(1)适合建立索引的情况
- 主键自动建立唯一索引。
- 经常作为查询条件在where或者order by 语句中出现的列要建立索引。
- 作为排序的列要建立索引。
- 查询中与其他表关联的字段,外键关系建立索引。
- 高并发条件下倾向组合索引。
- 用于聚合函数的列可以建立索引,列入使用了max(column_1)或者count(column_1)时的column_1就需要建立索引。
(2)不适合建立索引的情况
- -经常增删改查的列不要建立索引。
- 有大量重复的列不建立索引。
总结
索引:简化生活从你我开始。