北滘网站设计,网站建设应解决的问题,为什么网站后台google登陆不了 firefox可以,店铺装修设计网站介绍
索引(index)#xff1a;是帮助数据库高效获取数据的数据结构 。简单来讲#xff0c;就是使用索引可以提高查询的效率。
优点#xff1a;
1. 提高数据查询的效率#xff0c;降低数据库的IO成本。
2. 通过索引列对数据进行排序#xff0c;降低数据排序的成本#…介绍
索引(index)是帮助数据库高效获取数据的数据结构 。简单来讲就是使用索引可以提高查询的效率。
优点
1. 提高数据查询的效率降低数据库的IO成本。
2. 通过索引列对数据进行排序降低数据排序的成本降低CPU消耗。
缺点
1. 索引会占用存储空间。
2. 索引大大提高了查询效率同时却也降低了insert、update、delete的效率。 结构
MySQL数据库支持的索引结构有很多如Hash索引、BTree索引、Full-Text索引等。
我们平常所说的索引如果没有特别指明都是指默认的 BTree 结构组织的索引。 BTree结构 每一个节点可以存储多个key有n个key就有n个指针 节点分为叶子节点、非叶子节点 叶子节点就是最后一层子节点所有的数据都存储在叶子节点上 非叶子节点不是树结构最下面的节点用于索引数据存储的的是key指针 为了提高范围查询效率叶子节点形成了一个双向链表便于数据的排序及区间范围查询
拓展 非叶子节点都是由key指针域组成的一个key占8字节一个指针占6字节而一个节点总共容量是16KB那么可以计算出一个节点可以存储的元素个数16*1024字节 / (86)1170个元素。 查看mysql索引节点大小show global status like innodb_page_size; -- 节点大小16384 当根节点中可以存储1170个元素那么根据每个元素的地址值又会找到下面的子节点每个子节点也会存储1170个元素那么第二层即第二次IO的时候就会找到数据大概是1170*1170135W。也就是说BTree数据结构中只需要经历两次磁盘IO就可以找到135W条数据。 对于第二层每个元素有指针那么会找到第三层第三层由key数据组成假设key数据总大小是1KB而每个节点一共能存储16KB所以一个第三层一个节点大概可以存储16个元素(即16条记录)。那么结合第二层每个元素通过指针域找到第三层的节点第二层一共是135W个元素那么第三层总元素大小就是135W*16结果就是2000W的元素个数。 结合上述分析BTree有如下优点 对于千万条数据量BTree可以控制在小于等于3的高度所有的数据都存储在叶子节点上并且底层已经实现了按照索引进行排序还可以支持范围查询叶子节点是一个双向链表支持从小到大或者从大到小查找
语法
创建索引 create [ unique ] index 索引名 on 表名 (字段名,... ) ; 案例为tb_emp表的name字段建立一个索引
~~~mysql
create index idx_emp_name on tb_emp(name);
~~~ 在创建表时如果添加了主键和唯一约束就会默认创建主键索引、唯一约束 查看索引 show index from 表名; 删除索引 drop index 索引名 on 表名; 案例删除 tb_emp 表中name字段的索引
~~~mysql
drop index idx_emp_name on tb_emp;
~~~
注意事项 - 主键字段在建表时会自动创建主键索引 - 添加唯一约束时数据库实际上会添加唯一索引