b树索引和b 树索引_b 树索引和哈希索引_索引

什么是索引

索引是一种数据结构索引,可以帮助MySQL高效获取数据。他是一种排好序的快速查找数据结构。

b 树索引和哈希索引_b树索引和b 树索引_索引

一般索引本身也很大,不可能全部存储在内存当中,因此索引往往以索引文件的形式存储在磁盘上。索引如果没有特别指明,都是指B树结构组织的索引。其中聚集索引,次要索引,复合索引,前缀索引,唯一索引默认都是B+树索引。除了B+树索引之外还有哈希索引等。

索引的优势

① 类似书目索引,提高数据检索效率,降低数据库的IO成本

② 通过索引对数据排序,降低数据排序成本索引,降低CPU的消耗

索引的劣势

索引也是一张表,保存了主键与索引字段,并指向实体表的记录,所以索引也要占用空间。

索引虽然提高了查询速度,但却会降低更新表的速度,如对表进行insert, update, delete。因为更新表时,MySQL不仅要保存数据,还要保存索引文件,每次更新索引列字段,都需要调整对应的索引信息。

③ 对于大数据量的表,需要对索引进行设计。

索引的分类

① 单值索引:即一个索引只包含单个列,一个表可以有多个单列索引

② 唯一索引索引列的值必须唯一,但允许有控制。(如,不允许重名)

③ 复合索引:一个索引包含多个列

① 添加主键—索引为唯一索引,且不能为NULL

alter table TableA add primary key(column_name);

② 添加唯一索引索引值必须唯一(除NULL)

b 树索引和哈希索引_b树索引和b 树索引_索引

alter table TableA add unique iindex ndex_name(column_name);

③ 添加普通索引索引值可以出现多次

alter table TableA add index index_name(column_name);

④ 添加全文索引

alter table TableA add fulltext index index_name(column_name);

哪些情况需要创建索引

① 主键自动创建唯一索引

② 频繁作为查询条件的字段应该创建索引

③ 查询中与其他表关联的字段,外键关系创建索引

④ 频繁更新的字段不适合创建索引,因为每次更新不单单更新了记录还会更新索引

⑤ where条件里用不到的字段不创建索引

⑥ 单键/组合索引的选择问题,在高并发下倾向创建组合索引

⑦ 查询中排序的字段,若通过索引去访问将会大大提高排序速度

⑧ 查询中统计或者分组的字段(group by前提是必排序)

哪些情况不要创建索引

① 表记录太少—不需要建立索引(300万以上)

② 经常增删改的表

索引提高了查询速度,但同时也会降低更新表的速度,如对表进行的Insert, update, delete。因为更新表时,MySQL不仅要保存数据,还要保存索引文件。

③ 如果数据列包含许多重复的内容,如性别,为他/她建立索引没有太大的实际效果。

———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: wxii2p22