mysql索引的简介
1.索引是什么? 官方定义:索引是帮助MySQL高效获取数据的数据结构,所以索引的本质是数据结构。 当然还有一个更为简单的理解是:数据本身之外,数据库还维护这一个满足特定查找算法的数据结构,这些数据结构以某种方式指向数据,这样就可以在这些数据结构的基础上实现高级查找算法, 而这个数据结构就是索引。 存储位置:因为索引本身也很好,因此不可能全部都放在内存中,往往都是以索引文件的方式存储在 磁盘 上。 默认索引采用的算法: 一般采用BTREE 。 2.索引的优势 1)类似图书馆建书目索引,提高数据检索的效率,降低数据库的IO成本。 2)通过索引列对数据进行排序,降低数据排序成本,降低了CPU的消耗。 3.索引的劣势 1)实际上索引也是一张表,该表的主要内容就是保存索引的字段,并且指向具体表的记录,因此索引会占据空间。 2)虽然索引可以提高查询速度,同时却会降低更新表的速度,如果对表进行insert、delete和update时,因为在这过程中,MySQL不仅要保存数据到具体表,也要保存索引文件。 3)索引只是提高sql效率的一个因素,如何建立索引需要花费大量是时间建立适合的索引。 4.索引的分类 1)单值索引:即一个索引只包含单个列,一个表可以有多个单列索引。 2)唯一索引:索引列的值必须唯一,但允许有空值。 3)复合索引:一个索引包含多个数据表字段。(在高并发条件下,倾向建立复合索引