【MySQL】(1)索引优化分析

时间:2021-07-03 21:16:29

   

    大型网站,日常会有很多数据入库,订单啊,库存啊等等。在几十万甚至上百万的数据中如何快速检索,那就需要用索引了。索引分聚簇索引和非聚簇,聚簇索引是按照物理位置的存放顺序,而非聚簇不是;聚簇索引能提高多行检索的速度,而非聚簇索引对于单行的检索很快。


   索引的使用不仅仅是create index这么简单,在查询分析中有很多学问,让我们来一步步优化索引,建立索引。也不是所有数据都适合建立索引。需要了解索引的使用场景。



索引优点:


1.可以通过建立唯一索引或者主键索引,保证数据库表中每一行数据的唯一性

2.建立索引可以大大提高检索的数据,以及减少表的检索行数

3.在表连接的连接条件 可以加速表与表直接的相连 

4.在分组和排序字句进行数据检索,可以减少查询时间中 分组 和 排序时所消耗的时间(数据库的记录会重新排序)

5.建立索引,在查询中使用索引 可以提高性能

索引缺点:


1.在创建索引和维护索引 会耗费时间,随着数据量的增加而增加

2.索引文件会占用物理空间,除了数据表需要占用物理空间之外,每一个索引还会占用一定的物理空间

3.当对表的数据进行 INSERT,UPDATE,DELETE 的时候,索引也要动态的维护,这样就会降低数据的维护速度


索引使用场景:


1.在经常需要搜索的列上,可以加快索引的速度

2.主键列上可以确保列的唯一性

3.在表与表的而连接条件上加上索引

4.在经常需要排序(order by),分组(group by)和的distinct 列上加索引 可以加快排序查询的时间

5.在一些where 之后的 < <= > >= BETWEEN IN 以及某个情况下的like 建立字段的索引(B-TREE)

6.like语句的 右边使用通配符,索引有效

7.索引不会包含NULL列

8.使用短索引

9.不要在列上进行运算

10.选择越小的数据类型越好



不建立索引的情况:


1.查询中很少使用到的列 

2.很少数据的列也不应该建立索引

3.定义为text和image和bit数据类型的列不应该增加索引

4.当表的修改(UPDATE,INSERT,DELETE)操作远远大于检索(SELECT)操作时不应该创建索引


【MySQL】(1)索引优化分析