您的位置:首页 > 数据库 > MySQL

mysql索引优缺点以及创建的时机

2017-09-05 19:31 399 查看

建立索引的优点

1、可以通过建立唯一性索引,可以保证数据库表中数据的唯一性

2、可以加快数据的检索速度

3、可以加速表与表之间的连接

4、在使用分表和排序子句进行数据检索时,可以减少查询中分组和排序的时间

建立索引的缺点

1、索引的创建之后当然需要维护,因此索引的创建和维护要耗费时间。数据量越大,需要耗费的时间也就越多

2、索引需要占用额外的物理空间

3、当对表中的数据进行增加、删除、修改时,索引也需要动态的维护,这样一来速度会降低。

在查询时候,如果不加索引的话很简单的一个条件可能就需要全表扫描,数据库中建立合适的索引会大大提高效率,

什么情况下适合建索引

1、在经常需要搜索的列上建索引,这样会大大加快查找速度、

2、在经常使用在where子句中的列上建索引,加快条件的判断速度。

3、在经常需要连接的列上,可以加快连接的速度。

4、在经常需要排序的列上,因为索引已经是排过序的,这样一来可以利用索引的排序,加快排序查询时间。

5、在经常需要进行范围搜索的列上,同样,因为索引是排序的,指定范围则为连续的。

实践告诉我们,建立索引可以大大提高sql的性能:http://blog.csdn.net/wj1607162253/article/details/77483558

那是不是在数据库表字段中尽量多建索引呢?肯定是不是的。因为索引的建立和维护都是需要耗时的。

什么情况下不适合建立索引

1、在查询中很少用到的列。

2、那些只有很少数据值得列,如性别。建索引不仅没有什么优势,反而会影响更新速度。

3、那些定义为text等大的字段上。因为这些列的数据量要么相当大,要么取值很少。

附:sql性能优化时候需要注意的几个地方:

1、索引的排序

mysql查询只使用一个索引,因此如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。因此尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引。

2、like语句操作

一般情况下不鼓励使用like操作,如果非使用不可,如何使用也是一个问题。like “%a%” 不会使用索引而like “aaa%”可以使用索引。

3、不要在列上进行运算

select * from users where

YEAR(adddate)

4、不使用NOT IN和操作

NOT IN和操作都不会使用索引将进行全表扫描。NOT IN可以NOT EXISTS代替,id3则可使用id>3 or id
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql 数据库 索引