索引
含义:索引是一种数据结构,可以理解为“排好序方便快速查找的数据结构”。
建立索引的优势:通过建立索引,可以加快数据的检索效率。
建立索引的劣势:降低对表的操作速度(如INSERT,UPDATE,DELETE),因为对表数据进行操作,数据库需要对索引进行优化;其次索引也要占磁盘空间,它需要记录实体表被指向的字段。
索引分类:单值索引,唯一索引,复合索引
基本语法:
创建索引:create index index_name on table_name(column...)
删除索引:drop index index_name on table_name
查看索引:show index from table_name
修改索引:alter table table_name add primary key(column):添加主键索引
alter table table_name add unique index_name(column...):添加唯一索引
alter table table_name add index_name(column...):添加普通索引
索引的优化
1:表中的主键需要建索引(默认创建)
2:需要频繁查询的字段
3:逻辑外键关系需要建索引
4:表记录太少不适合建索引
5:表的增删改操作频繁不适合建索引
6:mysql在使用不等于(!=或者<>)的时候无法使用索引导致全表扫描
7:is null, is not null也无法使用索引
8:like以通配符开头('%abc...')mysql索引失效会变成全表扫描的操作
9:字符串不加单引号索引失效
10:少用or,用它来连接会索引失效
11:不在索引列上做任何操作(计算,函数,(自动or手动)类型转换,会导致索引丢失转而全表扫描)
12:尽量使用覆盖索引(只访问索引的查询(索引和查询列一致)),减少select *
【索引】13:单键/组合索引的选择问题(高并发下倾向创建组合索引)
14:查询中排序的字段,排序的字段若通过索引去访问将大大提高排序速度
15:查询中排序的字段,排序的字段若通过索引去访问将大大提高排序速度
推荐阅读
- Java|Java基础——数组
- 15、IDEA学习系列之其他设置(生成javadoc、缓存和索引的清理等)
- mysql中视图事务索引与权限管理
- mysql|一文深入理解mysql
- 17个搜索引擎
- 搜索引擎有哪些
- hadoop三个配置文件的参数含义说明(转)
- MySQL相关文章索引(2)
- Android_R.java文件中资源ID的含义
- 对矩阵的操作2