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 表名;
索引是一种特殊的数据库结构,可以用来快速查询数据库表中的特定记录。是提高数据库性能的重要方式。*所有*的数据类型都可以被索引。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
- MySQL索引 聚集索引
- mysql 索引 & 索引类型
- MySQL索引 聚集索引
- mysql 索引 & 索引类型
- mysql索引
- mysql索引
- mysql 索引
- MySql索引
- Mysql索引
- mysql 索引
- mysql 索引
- MySQL索引
- mysql索引
- mysql 索引
- mysql索引
- mysql 索引
- MySQL索引
- mysql索引
- fuse程序挂载时nonempty问题的理解和解决
- Visual Studio 2013中OpenCV2.4.9的配置(64位的配置)
- 【学习笔记】JavaScript编码规范-语句块
- 其他初始化(时钟、内存)
- MyEclipse 2014 汉化教程
- mysql索引
- python 访问 elasticsearch
- androud onTouch事件记录
- mysql约束条件
- 鸡啄米vc++2010系列25(滚动条控件Scroll Bar)
- mysql触发器
- Unity3d 物理碰撞de那点事(不是触发)
- SumOfNestedList
- ORA-01720: grant option does not exist for 'reference schema.table_name ora view_name'