MySQL 常用索引及创建方法
来源:互联网 发布:高斯金字塔算法 matlab 编辑:程序博客网 时间:2024/06/01 17:30
MySQL 索引的常用种类及创建方法
1. 普通索引
这是最基本的索引,它没有任何限制。它有以下几种创建方式:
◆创建索引
`CREATE INDEX indexName ON mytable(username(length));`
如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 length,下同。
◆修改
ALTER mytable ADD INDEX [indexName] ON (username(length))
◆创建表的时候直接指定
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX [indexName] (username(length)) );
◆删除索引的语法:
DROP INDEX [indexName] ON mytable;
2. 唯一索引
它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:
◆创建索引
CREATE UNIQUE INDEX indexName ON mytable(username(length))
◆修改
ALTER mytable ADD UNIQUE [indexName] ON (username(length))
创建表的时候直接指定 CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, UNIQUE [indexName] (username(length)) );
.
3.主键索引
它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引:
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, PRIMARY KEY(ID));
当然也可以用 ALTER 命令。记住:一个表只能有一个主键。
4. 组合索引
为了形象地对比单列索引和组合索引,为表添加多个字段:
`CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, city VARCHAR(50) NOT NULL, age INT NOT NULL );`
为了进一步榨取mysql的效率,就要考虑建立组合索引。就是将 name, city,
ALTER TABLE mytable ADD INDEX name_city_age (name(10),city,age);
name为 16,这里用 10。这是因为一般情况下名字的长度不会超过10,这样会加速索引查询速度,还会减少索引文件的大小,提高INSERT的更新速度。
如果分别在 usernname,city,age上建立单列索引,让该表有3个单列索引,查询时和上述的组合索引效率也会大不一样,远远低于我们的组合索引。虽然此时有了三个索引,但MySQL只能用到其中的那个它认为似乎是最有效率的单列索引。
建立这样的组合索引,其实是相当于分别建立了下面三组组合索引:
usernname,city,age usernname,city usernname 为什么没有 city,age这样的组合索引呢?这是因为MySQL组合索引“最左前缀”的结果。简单的理解就是只从最左面的开始组合。并不是只要包含这三列的查询都会用到该组合索引,下面的几个SQL就会用到这个组合索引:
SELECT * FROM mytable WHREE username="admin" AND city="郑州" SELECT * FROM mytable WHREE username="admin"
而下面几个则不会用到:
SELECT * FROM mytable WHREE age=20 AND city="郑州" SELECT * FROM mytable WHREE city="郑州"
- MySQL 常用索引及创建方法
- MySQL索引类型及创建
- MySQL索引类型及创建
- 【0052】mysql索引类型及索引方法
- mysql的索引创建及使用
- mysql数据库索引的创建及使用
- Mysql 索引创建、删除及查看
- MySQL索引的创建、删除及优缺点
- mysql索引的创建及删除
- mysql 建立索引的方法--创建视图
- MySQL索引概念以及创建方法
- Mysql的索引类型和创建方法
- mysql创建各类索引的方法
- MySQL里创建索引(Create Index)的方法和语法结构及例子,
- PostgreSQL索引创建方法及相关问题
- mysql 索引类型及创建索引(普通索引、唯一索引、主键索引、复合索引、全文索引)
- mysql索引的使用及优化方法
- mysql索引的使用及优化方法
- hdu 6103 Kirinriki 【尺取】
- spring mvc番外篇(三):主题(theme)
- 51Nod-1228-序列求和
- Kafka的安装与简单测试
- 文章标题
- MySQL 常用索引及创建方法
- HDOJ2102 深搜DFS解法+剪枝优化 入门题
- search sort
- 微信小程序获取open-gid和群名称
- CSS3 选择器——基本选择器
- CSS3 选择器——属性选择器
- MyBatis绑定错误--BindingException:Invalid bound statement (not found)
- CSS3 选择器——伪类选择器
- PHP ,与. 字符串拼接效率比较及原理