MySql索引

什么是索引:

索引用于快速找出在某个列中有一特定值的行

 

为什么要用索引:

如果表中查询的列有一个索引,MySQL能够快速到达一个位置去搜索数据文件

 

MySQL中索引的优点:

1.大大提高数据的查询速度

2.可以给任意字段设置索引

 

MySQL中索引缺点:

1.创建索引和维护索引要耗费时间

2.索引也需要占空间 数据表中的数据也会有最大上线设置的,如果我们有大量的索引,索引文件可能会比数据文件更快达到上线值

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

 

MySQL中索引使用原则:

1.对经常更新的表就避免对其进行过多的索引,对经常用于查询的字段应该创建索引

2.数据量小的表最好不要使用索引

3.在一同值少的列上(字段上)不要建立索引

 

索引的分类:

单列索引(普通索引,唯一索引,主键索引)、组合索引、全文索引、空间索引

单列索引:一个索引只包含单个列

普通索引:没有什么限制 纯粹为了查询数据更快一点

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

主键索引:是一种特殊的唯一索引,不允许有空值

组合索引:在表中的多个字段组合上创建的索引  最左匹配原则

全文索引:

1.在一堆文字中,通过其中的某个关键字等,就能找到该字段所属的记录行

2.使用要求:

       1.全文索引只有在MyISAM引擎上才能使用,

       2.只能在CHAR,VARCHAR,TEXT类型字段上使用全文索引

空间索引:

空间索引是对空间数据类型的字段建立的索引,

MySQL中的空间数据类型有四种,GEOMETRY、POINT、LINESTRING、POLYGON

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

要求:引擎为MyISAM,创建空间索引的列,必须将其声明为NOT NULL

 

创建索引

格式一:

CREATE TABLE 表名[字段名 数据类型]  [UNIQUE|FULLTEXT|SPATIAL|...] [INDEX|KEY] [索引名字] (字段名[length]) [ASC|DESC]

格式二:CREATE INDEX创建索引。

CREATE [UNIQUE|FULLTEXT|SPATIAL] [INDEX|KEY] 索引名称 ON 表名(创建索引的字段名[length])[ASC|DESC]

 

删除索引:

格式一:ALTER TABLE 表名 DROP INDEX 索引名

格式二:DROP INDEX 索引名 ON 表名;

 

你可能感兴趣的:(java,类,java基础面试)