标签:
索引:
索引是提高数据库性能的重要方式。 MySQL中,所有的数据类型都可以被索引。
MySQL的索引包括:普通索引,唯一性索引,全文索引,单列索引,多列索引和空间索引等。
索引的含义及特点:
索引是创建在表上的,是对数据库表中一列或多列的值进行排序的一种结构。索引可以提高查询的速度。
不同的存储引擎定义了每个表的最大索引数和最大索引长度。所有存储引擎对每个表至少支持16个索引,总索引长度至少为256字节。
索引的优缺点:
索引的优点是可以提高检索数据的速度,这是创建索引的主要原因:对于依赖关系的子表和父表之间的联合查询时,可以提高查询速度;使用分组和排序子句进行数据查询时,同样可以显著节省查询中分组和排序的时间。
索引的缺点是创建和维护索引需要耗费时间,耗费时间的数量随着数据的增加而增加;索引需要占用物理空间,每一个索引要占一定的物理空间;增加,删除和修改数据时,要动态的维护索引,造成数据的维护速度降低了。
技巧:
索引可以提高查询的速度,但是会影响插入记录的速度。因为,向有索引的表中插入记录时,数据库系统会按照索引进行排序。这样就降低了插入记录的速度,插入大量记录时的速度影响更加明显。这种情况下,最好的办法是先删除表中的索引,然后插入数据。插入完成后,再创建索引。
索引的设计原则:
选择唯一性索引
唯一索引的值是唯一的,可以更快速的通过该索引来确定某天记录。
为经常需要排序,分组的联合操作的字段建立索引
经常需要ORDER BY, GROUP BY, DISTINCT和UNION等操作的字段,排序操作会浪费很多时间。
为常作为查询条件的字段建立索引
限制索引的数目
尽量使用数据量少的索引
尽量使用前缀来索引
删除不再使用或者很少使用的索引
注意: 选择索引的最终目的是为了使查询的速度变快。上面给出的原则是最基本的准则,但不能拘泥于上面的原则。根据应用的实际情况进行分析和判断,选择最适合的索引方式。
创建索引:
创建表的时候创建索引:
在创建表时可以直接创建索引,这种方式最简单,方便。其基本形式如下:
CREATE TABLE 表名( 属性名 数据类型[完整性约束条件], 属性名 数据类型[完整性约束条件], …… 属性名 数据类型[完整性约束条件], [UNIQUE|FULLTEXT|SPATIAL] INDEX|KEY [别名] (属性名1 [(长度)] [ASC|DESC]) );
其中, UNIQUE 是可选参数,表示索引为唯一性索引;
FULLTEXT是可选参数,表示索引为全文索引;
SPATIAL 是可选参数,表示索引为空间索引;
INDEX|KEY 参数用来指定字段为索引的,两者选择其中之一就可以了,作用是一样的;
“别名”是可选参数,用来给创建的索引取的新名称;
“属性1”参数指定索引对应的字段的名称,该字段必须为前面定义好的字段;
“长度”是可选参数,其指索引的长度,必须是字符串类型才可以使用;
“ASC”和”DESC”都是可选参数, “ASC”参数表示升序排列,”DESC”参数表示降序排列。
在已经存在的表上创建索引:
在已经存在的表上创建索引,可以直接为表上的一个或几个字段创建索引。基本形式如下:
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名 ON 表名( 属性名 [(长度)] [ASC|DESC] );
其中, UNIQUE是可选参数,表示索引为唯一性索引;
FULLTEXT是可选参数,表示索引为全文索引;
SPATIAL 是可选参数,表示索引为空间索引;
INDEX 参数用来指字段为索引的;
“索引名”参数是给创建的索引取的新名称;
“表名”参数是指需要创建索引的表的名称,该表必须是已经存在的,如果不存在,需要先创建。
“属性名”参数指定索引对应的字段的名称,该字段必须为前面定义好的字段;
“长度”是可选参数,其指索引的长度,必须是字符串才可以使用;
“ASC”和”DESC”都是可选参数,ASC参数表示升序排列, DESC参数表示降序排序。
用ALTER TABLE语句来创建索引:
在已经存在的表上,可以通过ALTER TABLE语句直接为表上的一个或几个字段创建索引。基本形式如下:
ALTER TABLE 表名 ADD [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名(属性名 [(长度)] [ASC|DESC]);
删除索引:
删除索引是指将索引表中已经存在的索引删除掉。一些不再使用的索引会降低表的更新速度,影响数据库的性能。对于这样的索引,应该将其删除。
对应已经存在的索引,可以通过DROP语句来删除索引。基本形式如下:
DROP INDEX 索引名 ON 表名;
其中,“索引名”参数指要删除的索引的名称;
“表名”参数指索引所在的表的名称;
收集文章:
http://my.oschina.net/u/232270/blog/118001
标签:
原文地址:http://my.oschina.net/lvhuizhenblog/blog/383479