- 索引是什么?索引用来快速查找那些具有特定值的记录。
- 索引分类:单列索引包括主键索引、唯一索引、普通索引;还有组合索引,全文索引。
- 什么时候该用索引?
经常作为查询条件在WHERE或者ORDER BY 语句中出现的列要建立索引;
作为排序的列要建立索引;
查询中与其他表关联的字段,外键关系建立索引
高并发条件下倾向组合索引;
用于聚合函数的列可以建立索引,例如使用了max(column_1)或者count(column_1)时的column_1就需要建立索引 - 什么时候不宜建立索引?
经常增删改的列不要建立索引;
有大量重复的列不建立索引;
表记录太少不要建立索引; - 索引的优缺点:
优势:可以快速检索,减少I/O次数,加快检索速度;根据索引分组和排序,可以加快分组和排序;
劣势:索引本身也是表,因此会占用存储空间,一般来说,索引表占用的空间的数据表的1.5倍;索引表的维护和创建需要时间成本,这个成本随着数据量增大而增大;构建索引会降低数据表的修改操作(删除,添加,修改)的效率,因为在修改数据表的同时还需要修改索引表; - 看到公司项目里有一张表里有两个字段是主键索引, 说好的一张表只能有一个主键,上网查阅得知, 所谓的一张表多个主键, 是联合主键. 就是多个字段一起作为一张表的主键.
- MySQL创建联合索引: Navicat直接在设计表的时候添加主键1, 主键2...就是联合主键. 命令行下就是
- mysql数据表中sex字段适合加索引吗:https://blog.csdn.net/zxcc1314/article/details/83627025 and http://blog.sina.com.cn/s/blog_68431a3b0102yte8.html
- mysql 内核学习:https://mp.weixin.qq.com/s/tmkRAmc1M_Y23ynduBeP3Q
- 数据表中status是否需要加索引:https://ask.csdn.net/questions/690798
- mysql innodb 索引:https://blog.csdn.net/u012978884/article/details/52416997?utm_source=blogxgwz0
参考:https://blog.csdn.net/tongdanping/article/details/79878302