1. 索引(index)是帮助MySQL高效获取数据的数据结构。
它对于高性能非常关键,但人们通常会忘记或误解它。
索引在数据越大的时候越重要。规模小、负载轻的数据库即使没有索引,也能有好的性能, 但是当数据增加的时候,性能就会下降很快。
Tip:蠕虫复制,可以快速复制大量的数据
例:insert into emp select * from emp
2. MySQL中常见的索引
◆普通索引 ◆唯一索引 ◆主键索引 ◆组合索引 ◆全文索引◆外键 (只有innodb存储引擎才支持)
2.1普通索引:
这是最基本的索引,它没有任何限制。有以下几种创建方式:
有以下几种创建方式:
◆创建索引
CREATE INDEX indexName ON tablename(username(length))
◆修改表结构
ALTER tablename ADD INDEX indexName (username(length))
Tip:length可以小于字段实际长度如果是BLOB 和 TEXT 类型,必须指定length ,下同
◆创建表的时候直接指定
CREATE TABLE mytableuuu( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX indexName (username(length)) )
CREATE TABLE mytable(id INT NOT NULL,username VARCHAR(16) NOT NULL)
create index index1 on mytable(id) //创建普通索引
◆删掉索引:
drop index index1 on mytable
有一个概念,
行定义:在声明字段(列)的时候定义的,比如primary key
表定义:在所有字段(列)声明完之后定义的,比如primary key,index
CREATE TABLE mytable(id INT NOT NULL,username VARCHAR(16) NOT NULL,index index1(username))
3.0唯一索引(unique)
索引列的值必须唯一,但允许有空值。
1)创建索引:Create UNIQUE INDEX indexName ON tableName(tableColumns(length))
2)修改表结构:Alter tableName ADD UNIQUE [indexName] ON (tableColumns(length)
3)创建表的时候直接指定:Create TABLE tableName ( [...], UNIQUE [indexName](tableColumns(length))
4.0主键索引(primary key)
1、主键自动建立唯一索引2、频繁作为查询条件的字段
3、查询中与其他表关联的字段,外键关系建立索引
4、单键/组合索引的选择问题,高并发下倾向创建组合索引
5、查询中排序的字段,排序字段通过索引访问大幅提高排序速度
6、查询中统计或分组字段
1、表记录太少
2、经常增删改的表
3、数据重复且分布均匀的表字段,只应该为经常查询和最经常排序的数据列建立索引(如果某个数据类包含太多的重复数据,建立索引没有太大意义)
4、频繁更新的字段不适合创建索引(会增加IO负担)
5、where条件里用不到的字段不创建索引
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)