海纳百川有容乃大
谢谢各位大牛的分享、感谢各位朋友的访问
mysql消耗资源的点:
- CPU:比较、排序、SQL解析、函数或逻辑运算
- 内存:缓存数据访问,临时数据存放
- 硬盘:冷数据读取、大数据量排序和关联,数据写入落盘
- 网络资源:sql请求交互,结果集返回
这些很多都借助索引减轻自己的‘罪过’,那么索引是什么?
表没有索引会变成什么样,或许循规蹈矩听‘插入’的指挥按顺序一条条的躺在磁盘上又或许缺乏想象力的我想换个话题,可能他也就只有这一种选择了吧
表加了索引,自增主键、立刻注入了新鲜血液 活蹦乱跳变成了树状结构,是不是想起了聚簇索引,聚簇索引:主索引文件和数据文件是同份文件,主键一定是聚簇索引
分类
普通索引,无限制加速查
create index index_name on tableName(field);
alter table tableName add index index_name(field);
1、唯一索引
值唯一,容许空,组合索引则列值的组合必须唯一
create unique index ……
alter table tableName add unique index ……
2、主键索引
特殊唯一索引,一个表只能有一个,不容许空,一般建表是创建
3、组合索引
多个字段上创建的索引,最左前缀原则
语句同普通索引,field为多个,逗号隔开;如有(col1,col2,col3)
叶子节点是:没错 懒得画 拷一份过来 说实话有些丑 ^_^还是谢谢作者,链接自跳
据name字段从辅助聚簇索引定位到哪一叶子节点,据age在上述表格寻找,找出所有符合的数据及其对应的ID,据ID回表查
4、全文索引
查找文本中关键字,fulltext更像搜索引擎,不推荐使用,所以不写了
i、聚簇索引,非聚簇索引
聚簇索引具有唯一性,他的顺序是数据的物理存储顺序(各数据按索引序存放),索引相邻、对应数据相邻、就这样完美紧凑,和主键自增相契合,如果主键不是自增,为了找相邻的伙伴寻道分页多麻烦!
非聚簇索引的索引顺序和数据物理排列顺序无关,叶子节点上的data是主键:记录的地址可能会变、主键不会