SQL--索引
来源:互联网 发布:mysql左外连接查询 编辑:程序博客网 时间:2024/06/08 19:04
1.1 索引的用处
索引是数据的位置,方便快速定位到数据的位置,索引是有代价的,提高了查询速度,降低了增持改查的数据,因为每一个的操作都会引起数据的位置的变化。
1.2 索引使用的场景
一般在比较频繁的列上加,而且在重复度低的列上加比较好。比方说在性别列加的话,因为性别只有男和女,完全无意义,加了反而会加剧索引文件的大小,而比方说加到身份证上就比较合理。
1.3 索引种类
key:普通索引,纯粹的是帮助提高查询速度。
unique key:唯一索引,不重复的索引,即能提高查询速度,也能起到约束的作用。
primary key:主键索引,创建了主键将会自动创建索引
full text:全文索引,在中文下是无效的。
例子如下:
创建表的时候创建索引,指定索引的名称为
CREATE TABLE user( id INTEGER primary key, name VARCHAR(255), email VARCHAR(255), key index_user_id(id))
1.4 索引长度
创建索引时,可以只索引前一部分内容,比如前10个字符。比如邮箱大部分都是以.com结尾的,建立邮箱索引后,查询时就只需要匹配一小部分内容了。
如将邮箱的前10个字符建立索引。
key index_user_name(email(10))
1.5 多列索引
把两列或多列的值看成一个整体,然后建索引。
比如一般姓和名,可以将两列组合起来创建联合起来创建索引,会加快查询速度。
create table t1( xing char(2), ming char(10), key index_t1_xm(xing,ming))
涉及到联合索引的列时,遵循左前缀的原则。
执行如下SQL,索引将会起作用。可通过explain查看possible_key和key显示的值
explain select * from t1 where xing='朱' AND ming='元璋'explain select * from t1 where xing='朱' OR ming='元璋'explain select * from t1 where xing='朱'
而如下 的SQL,SQL将不会起作用
explain select * from t1 where ming='元璋'
1.6 索引冗余
可能在某个列存在多个索引。
比如上面的联合索引index_t1_xm(xing,ming),查询姓名和姓,索引将会起作用,但是查询名的时候索引不会起作用,那就另外创建一个名的索引。key ming(ming),这样,字段名ming将会出现索引冗余。但是冗余索引在开发中有时是必要的。
2 索引操作
查看表的索引:
show index from t1
在user表中的id列创建索引名称为user_index
alter table t1 add [unique/index] index_t1_ming(ming)create index user_index on user(id)
删除user表中指定名称为user_index 的索引
drop index user_index on useralter table t1 drop index index_t1_ming
- sql 索引
- sql索引
- SQL索引
- SQL索引
- SQL索引
- sql-索引
- SQL索引
- SQL索引
- SQL索引
- SQL---索引
- SQL索引
- sql索引
- sql 索引
- SQL索引
- sql索引
- SQL索引
- SQL 索引
- sql 索引
- Windows7(32位)下安装Ubuntu16.04双系统
- 工厂方法模式
- 微信支付回调处理
- 近期目标
- mybatis注解配置缓存的方法
- SQL--索引
- oracle varchar2与varchar的区别
- python 学习笔记4
- zoj分类
- MyEclipse 安装Gardle环境
- Wamp &ThinkPHP 环境下PHP5 连接Oracle12c 步骤
- keil输出hex文件
- windows系统设置环境变量,系统变量
- 【docker入门】centos7下安装docker