mysql中的索引
2016-02-25 15:56
513 查看
一般来说索引可以分为普通索引,主键索引,全文索引,唯一索引和空间索引。
注意:
1. 创建表时指定primary key会自动生成主键索引
唯一、全文、空间索引分别添加关键词unique\fulltext\spatial index
普通索引直接用index可以进行指定
2. 创建索引时mysql会自动进行排序,通过asc和desc可以指定升序还是降序排列
3. 创建全文索引时必须指定myisam存储引擎
b 对已有表添加索引
1 添加索引
a 创建表时添加CREATE TABLE table_name [col_name data_type] [UNIQUE|FULLTEXT|SPATIAL] [INDEX|KEY] [index_name] (col_name [length]...) [ASC | DESC]
注意:
1. 创建表时指定primary key会自动生成主键索引
唯一、全文、空间索引分别添加关键词unique\fulltext\spatial index
普通索引直接用index可以进行指定
2. 创建索引时mysql会自动进行排序,通过asc和desc可以指定升序还是降序排列
3. 创建全文索引时必须指定myisam存储引擎
b 对已有表添加索引
alter table来添加索引 ALTER TABLE tbl_name ADD {INDEX|KEY} [index_name] (index_col_name,...) | ADD [CONSTRAINT [symbol]] PRIMARY KEY(index_col_name,...) | ADD [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [index_name](index_col_name,...) | ADD FULLTEXT [INDEX|KEY] [index_name](index_col_name,...) | ADD SPATIAL [INDEX|KEY] [index_name](index_col_name,...) 使用create index来创建 CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name ON tbl_name (index_col_name,...)
2 查询索引
主要有三种方法 desc table_name; show index from table_name; show indexes from table_name; show keys from table_name;
3 删除索引
有两种方法 ALTER TABLE tbl_name DROP PRIMARY KEY | DROP {INDEX|KEY} index_name DROP INDEX index_name ON tbl_name
4 修改索引
先删除,再重新创建
5 索引的代价
1. 磁盘占用 2. 对dml(delete, update, insert)语句会有影响
6 索引使用的限制
1. 对于使用like和regexp的查询,首字符不能为通配符 2. where条件里使用了!= 则不会使用索引 3. where条件里使用了函数,索引也会失效 4. 如果条件中有or语句,则必须要所有的部分都是索引;因此尽量少使用or语句 5. 如果列类型是字符串,则一定要讲数据用引号引起来,否则不适用索引 6. 如果mysql估计全表扫描比使用索引快则不会使用索引。
7 查看索引使用的情况
show status like 'Handler_read%'; Handler_read_key值越高说明索引使用率越高 Handler_read_rnd_next值说明不适用索引的查询量
8 大批量插入数据时索引的影响
对于MyISAM引擎: alter table table_name disable keys; loading data//insert...; alter table table_name enable keys; 对于Innodb: 1. 将要导入的数据按照主键排序 2. set unique_checks=0关闭唯一性校验 3. set autocommit=0 关闭自动提交
相关文章推荐
- 在ubuntu中出现Call to undefined function: mysql_connect()
- MySQL损坏表修复(附录自动处理脚本)
- mysql网课部分笔记
- MySQL中myisam和innodb的主键索引有什么区别?
- mysql执行脚本无法插入中文
- mysql分表的3种方法
- mysql导入导出数据方法分享
- Windows 下安装Mysql 5.7 压缩包
- MySQL 数据类型
- MySQL预处理语句
- Faster MySQL dumps and loads with –tab and –use-threads
- 卸载mysql残留
- 关于MySQL中的游标问题
- MySQL知识分类
- MySQL创建用户与授权方法
- mysql配置优化
- perl 连接 mysql 数据库
- mysql连接
- MySQL知识(十一)——使用正则表达式查询
- mysql连接查询