mysql索引

来源:互联网 发布:金江软件工作室 编辑:程序博客网 时间:2024/06/03 18:24
**索引**
索引是一种特殊的数据库结构,可以用来快速查询数据库表中的特定记录。是提高数据库性能的重要方式。*所有*的数据类型都可以被索引。mysql中的索引包括:
普通索引
唯一索引
全文索引
单例索引
多例索引
空间索引
----------
索引的含义与特点:
  索引是建立在表上的,是对数据库一列或多列的值进行排列的一种结构。可以提高查询速度。
  不同的存储引擎定义了每个表的最大索引数和最大索引长度。所以存储引擎对每个表最大支持16个索引,总索引长度至少为256字节。有些存储引擎支持更多更大的索引长度。


**索引的两种储存类型:B型树(BTREE)索引      哈希(HASH)索引       
  支持该索引的引擎 :innoDB、MyISAM、MEMORY     MEMORY(默认支持BTREE)      
  
索引的优点不必多说,不过世上人无完人,索引也是有缺点的:
  创建和维护需要消耗更多的时间,消耗时间的数量随着数据量的增加而增加;
  索引需要占用物理空间,每一个索引要占用一定的物理空间;
  在对数据进行增删改查时,要动态维护索引,造成数据维护速度降低;


设计索引的原则:
1、选择唯一性索引
2、为经常需要排序、分组、和联合操作的字段建立索引
3、为常作为查询条件的字段建立索引
4、限制索引的条数
5、尽量使用数据少的索引
6、尽量使用前缀来索引


创建索引:在某表的一列或多列上建立一个索引、以便提高对表的访问速度。
  CREATE TABLE 表名(属性名 数据类型【完整性约束条件】
    属性名 数据类型【完整性约束条件】
                     ......
                     [UNIQUE|FULLTEXT|SPATIAL] INDEX|KEY
[别名](属性名1[长度][ASC|DESC] )
     );
UNIQUE:唯一性索引;
FULLTEXT:全文索引;
SPATIAL:空间索引;
INDEX和KEY参数使用来制定字段为索引的,两者作用是一样的。
别名:给创建的索引取一个新的名称。
长度:规定长度
ASC:升序排列
DESC:降序排列
长度|ASC|DESC都是可选参数。
  普通索引:最简单,最方便,创建方法就是最普通的。
-----
  唯一索引:
   比如给id创建unique索引并不是id也要是unique的,不是unique也能创建唯一索引。但是,这样可能达不到高速查询的目的。
   eg:CREATE TABLE index2(id INT UNIQUE , name VARCHAR(20),UNIQUE INDEX
    index2_id(id ASC))
-----
  全文索引:全文索引只能创建在CHAR、VARCHAR或TEXT类型的字段上。目前只有MyISAM存储引擎支持全文索引。


  单例索引:是在表的单个字段上创建索引。
  多例索引:是在表的多个字段上创建一个索引。
  空间索引
****在已经存在的表上创建索引****
CREATE[UNIQUE|FULLTEXT|SPATIAL]INDEX 索引名
 ON 表名(属性名[长度] [ASC|DESC]);
---------
用ALTER TABLE语句创建索引
ALTER TABLE 表名 ADD [UNIQUE|FULLTEXT|SPATAL] INDEX 索引名(属性名[长度][ASC|DESC]);
-------
删除索引:
DROP INDEX 索引名 ON 表名;
0 0