首页 > 编程知识 正文

mysql索引有哪些原则,mysql索引优点和缺点

时间:2023-05-06 20:34:45 阅读:190053 作者:1788

一.索引介绍

1、索引概述

索引(Index )是一种帮助MySQL高效检索数据的数据结构。

在MySQL中,索引是一个存储引擎级概念,不同的存储引擎实现索引的方式不同。 MyISAM和InnoDB存储引擎只支持BTREE索引,而MEMORY/HEAP存储引擎支持HASH和BTREE索引。

2、索引优势

a、提高数据检索效率,降低数据库IO成本。

b、按索引排序数据,降低了数据排序成本,降低了CPU的消耗。

c、大大加快数据的查询数据速度。

3、索引的缺点

a .索引和维护需要时间,随着数据量的增加也需要时间

b、索引也需要留出空间。 我知道数据表中的数据也是最大在线设置的。 如果有大量索引,索引文件可能会比数据文件更早达到联机值

c .添加、删除、修改表中数据时,索引也需要动态维护,降低了数据维护速度。

4、索引使用原则

a、主键自动建立唯一索引

b、经常作为查询条件的字段需要编制索引

c、查询中与其他表相关的字段、外键关系进行索引

d、经常更新的字段不适合索引。 因为每次更新都不仅更新记录,还更新索引

e、WHERE条件下不能使用的字段不编制索引

f、一键式/组合索引选择问题,世卫组织? (倾向于在高并发性下创建组合索引)

g、查询中排序的字段、排序的字段按索引访问会大大提高排序速度

h、查询中的统计或分组字段

如果不使用索引:

a .不要为经常更新的表创建过多的索引。 必须为查询中常用的字段创建索引。

b、数据量少的表最好不要使用索引。 因为数据很少,所以检查所有数据所用的时间可能比遍历索引的时间短,并且索引可能无法优化。

c、不要为具有较少不同值的列创建索引。 例如,学生表的“性别”字段中只有男、女两个不同的值。 可以为具有不同值的列创建索引。

二.索引的分类

1、单列索引

单列索引只能包含单列,但一个表可以包含多个单列索引。

a .普通索引

常规索引允许在定义索引的列中插入重复值和空值。

b .唯一索引

索引列中的值必须是唯一的,但允许空值。

c、主键索引

主键索引是特殊的唯一索引,不能为空值。

2、复合索引

为表中的多个字段组合创建的索引仅在使用由查询条件组合而成的多个字段左侧的字段时使用,并且在使用复合索引时遵循最左边的前缀集。

3、全文索引

全文索引,仅MyISAM存储引擎支持,并且只能在CHAR、VARCHAR和TEXT类型字段中使用全文索引。

全文索引主要用于搜索文本中的关键字,而不是直接与索引中的值进行比较。 如果数据量较大,则将数据放入没有全文索引的表中,然后在CREATE index中创建fulltext索引,这比在创建表的fulltext后写入数据要快得多。

4、空间索引

空间索引是为空间数据类型字段创建的索引,MySQL的空间数据类型有四种:地理空间、点、线性和多边形。

创建空间索引时,请使用SPATIAL关键字。

空间索引必须使用MyISAM存储引擎,并且空间索引字段必须为空。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。