大型网站,日常会有很多数据入库,订单啊,库存啊等等。在几十万甚至上百万的数据中如何快速检索,那就需要用索引了。索引分聚簇索引和非聚簇,聚簇索引是按照物理位置的存放顺序,而非聚簇不是;聚簇索引能提高多行检索的速度,而非聚簇索引对于单行的检索很快。
索引的使用不仅仅是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)操作时不应该创建索引