索引是一种特殊的数据库结构,用于提高国内数据性能的重要方式,可以用来快速查询数据表中的特定记录。
mysql中所有的数据都可以被索引,用于快速查询数据库中特定的记录。
索引包括:
索引是将数据库中单列或者多列值进行排序的结构。(索引是一种结构),使用索引可以大幅提升查询的效率。
1、可以提升查询的速率;
2、可以降低服务器的负载;
3、索引类似于书本的目录,不用遍历所有数据,通过索引即可查询到数据。
索引的劣势:
1、索引需要维护:创建索引、后期的维护耗时;
2、索引需要占用物理存储空间;
3、索引在进行插入等操作因为要插入索引的操作,会消耗时间和性能(可以考虑先删除索引,大量插入数据后再进行新建索引的操作)
总体来说:索引可以提高查询速率,但是需要一定的维护成本。
不同的存储引擎,对每个表的索引的个数和最大长度的定义也不同:所有的存储引擎至少支持16个引擎,每个索引最少256字节长度。
mysql默认使用的是B树的索引方式,也可以使用哈希的方式。
已经存在的数据表中,至少一列上进行索引的创建,提高数据库查询的速度和服务器的性能。
CREATE TABLE 表名称( 属性名 属性类型 [约束条件], 属性名 属性类型 [约束条件], 属性名 属性类型 [约束条件], 属性名 属性类型 [约束条件] [UNIUQE|FULLTEXT|SPATIAL] INDEX或者KEY [别名](属性名1 [(长度)] [ASC|DESC]) ); 1、索引的类型:UNIQUE-唯一索引、FULLTEXT-全文索引、SPATIAL-空间索引 2、Index和key用户指定字段索引,用户只用选择其中一个即可。 3、可以为索引取一个别名,别名的参数: (1)属性名1:索引对应的字段名 (2)长度可选,索引的长度,字符串类型才可以使用 (3)ASC/DESC 升序和降序。
创建唯一性索引使用UNIQUE关键字进行表的约束。
唯一索引可以约束字段的唯一性,但是有时候并不能提升用户的查询速度,不能实现优化查询的目的。
1、全文索引只能作用于 CHAR、VARCHAR、TEXT类型的属性字段;
2、只用存储引擎MyISAM支持全文检索,InnoDB或者其他存储引擎在5.6后引入支持;
1、创建单列索引,即是在单个属性字段上进行索引的创建;
2、创建多列索引,即是在多个属性字段上进行索引的创建:使用的时候必须要用到第一个字段,索引才会有效。
创建的方法和前面相同。
只用查询条件使用了第一列,即使用了name才会应用索引。
1、字段必须要有NOT NULL的约束;
2、使用的字段类型是 geometry 类型才可以使用空间索引。
--后续使用后再补充
和创建表格时,创建索引类似,这里语法结构有点不同。
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name ON 表名(属性[长度|asc|desc]);
其他创建各种类型的索引方法类似。
修改索引,起始就添加一个索引。
ALTER TABLE 表名 ADD [UNIQUE|FULTEXT|SPATIAL] INDEX index_name(属性名[len|desc|asc]); 通过修改表来实现
不再需要的索引进行删除,节省空间,同时提高性能。
DROP INDEX index_name ON table_name;