索引的作用
1.索引用于快速找出在某行数据,如果不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行2.表越大,查询数据所花费的时间就越多,通过索引MySQL能够快速到达一个位置去搜索数据文件,节省很大一部分时间
mySql的索引
1.MySQL可以给
任意字段设置索引2.创建索引和维护索引要
耗费时间,并且随着数据量的增加所耗费的时间也会增加,当对表中的数据进行增加、删除、修改时,索引也需要动态的维护,降低了数据的维护速度3.
占用一定的空间,我们知道数据表中的数据也会有最大上线设置的,如果我们有大量的索引,索引文件可能会比数据文件更快达到上线值聚簇索引:索引和数据是绑定在一块的,找到了索引,也就找到了数据。
使用原则
1. 并不是每个字段度设置索引就好,也不是索引越多越好2.对经常更新的表就避免对其进行过多的索引,对经常用于查询的字段威该创建索引3.一个字段,如果重复的值很多,不要建立索引,比如性别字段上只有男,女两个不同值(因为随便取个值,机会能把50%的数据给捞出来)相反的,如果不同值较多可以建议使用索引,对字段建立索引,只需要输入索引,就能定位到具体的某行数据。
索引分类
单列索引
一个索引只包含单个列,一个表中可以有多个单列索引,单列索引包含:
普通索引:MYSQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值(比如姓名;因为姓名是有一定的重复率的),纯粹是为了查询数据更快一些。唯一索引:索引列中所有的值必须是唯一(身份证号)的,但是允许里面有空值主键索引:是一种特殊的唯一索引,不允许里面有空值。(id号)
组合索引
对表中的多个字段进行组合,然后创建索引,只有在查询条件中使用了这些字段的左边字段时,索引才会被使用,使用组合索引时遵循最左前缀原则
全文索引
只有在MyISAM引擎支持,在CHAR、VARCHAR、TEXT类型字段上可以使用全文索引全文索引就是在一堆文字中,通过其中的某个关键字等,就能找到该字段所属的纪录行,比如:“你好,...” 通过 “你好”,可能就可以找到该条纪录。
通过EXPLAIN关键字,可以查看索引是否正在被使用,并且输出其使用的索引的信息。sql优化的技巧,分析和排查问题的技巧。