mysql创建索引需要注意什么

创建索引的目的是为了提高查询效率,但需要注意的是,首先,索引可以大大提高查询速度,但同时会降低表更新的速度,比如对表进行INSERT、UPDATE、DELETE。
因为更新mysql表时,不仅需要保存数据,还需要保存索引文件。
其次,索引索引文件会占用磁盘空间。
通常这个问题并不严重,但是如果在一个大表上创建多个合并索引,索引文件就会变得非常大。

为什么要创建数据库索引?

数据库中索引的优缺点为什么要创建索引这是因为创建索引可以提高系统性能。
首先,通过创建唯一索引,可以保证数据库表中每一行数据的唯一性。
其次,可以加快数据检索速度,这也是创建索引的主要原因。
第三,它可以加速表之间的连接,这对于实现数据引用完整性非常有意义。
第四,当使用分组和排序子句获取数据时,查询中分组和排序的时间也可以显着减少。
第五,通过使用索引,可以在查询过程中使用优化隐藏器来提高系统性能。
有人可能会问:添加索引有这么多好处,为什么不为表中的每一列都创建一个索引呢?这种想法有一定道理,但也有失偏颇。
尽管索引有很多优点,但为表中的每一列都添加索引是不明智的。
这是因为添加索引有很多缺点。
首先,创建和维护索引需要时间,并且这个时间随着数据量的增加而增加。
二、索引需要占用物理空间除了数据表占用的数据空间外,每个索引还占用一定的物理空间,如果要创建聚集索引,则需要的空间会更大。
第三,在表中增删改数据时,必须动态维护索引,降低了数据维护的速度。
索引建立在数据库表中的特定列上。
因此,在创建索引时,应该仔细考虑哪些列可以建立索引,哪些列不能建立索引。
一般来说,应该在该列上创建索引,例如:在经常需要搜索的列上,它可以加快对作为主键的列的搜索速度,它强制该列的唯一性并组织排列结构;表中的数据;在join中经常使用的列中,该列是外键,可以加快基于范围的经常需要的列中的join在该列上创建索引进行搜索,因为索引已经排序了,并且指定范围是连续的在经常需要排序的列上创建索引,因为索引已经排序了,这样查询就可以使用索引排序来加快排序查询时间;in常用于在WHERE子句中的列上创建索引,以加快条件的考虑。
同样,有些列无法建立索引。
一般来说,这些不可索引的列具有以下特点:首先,不能为查询中很少使用或引用的列创建索引。
这是因为,由于这些列很少使用,索引或不索引都不会提高查询速度。
另一方面,由于索引的增加,降低了系统维护的速度,增加了空间需求。
其次,不能为数据值较少的列添加索引。
这是因为,由于该列的值很少,比如人员表的性别列,因此在查询结果中,结果集中的数据行占了表中的大部分数据行,即数据表中待搜索行的比例较大。
增加索引并不会显着加快检索速度。
第三,索引不能添加到定义为文本、图像和位数据类型的列中。
这是因为该列的数据量要么比较大,要么数值很少。
第四,当修改的性能远大于恢复的性能时,