什么是索引?
索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。
索引是一种数据结构。数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。
更通俗的说,索引就相当于目录。为了方便查找书中的内容,通过对内容建立索引形成目录。索引是一个文件,它是要占据物理空间的。
索引有哪些优缺点?
索引的优点
可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能
索引的缺点
时间方面:创建索引和维护索引要耗费时间,具体地,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,会降低增/改/删的执行效率;
空间方面:索引需要占物理空间。
数据库哪些情况下适合建索引,哪些情况下不适合建索引
一、哪些情况下适合建索引
1. 频繁作为where条件语句查询的字段
2. 关联字段需要建立索引,例如外键字段,student表中的classid, classes表中的schoolid 等
3. 排序字段可以建立索引
4. 分组字段可以建立索引,因为分组的前提是排序
5. 统计字段可以建立索引,例如count(),max()
二、哪些情况下不适合建索引
1.频繁更新的字段不适合建立索引
2.where条件中用不到的字段不适合建立索引
3.表数据可以确定比较少的不需要建索引
4.数据重复且发布比较均匀的的字段不适合建索引(唯一性太差的字段不适合建立索引),例如性别,真假值
5. 参与列计算的列不适合建索引
最左前缀原则
- 多列索引:
- ALTER TABLE people ADD INDEX lname_fname_age (lame, fname , age);
- 为了提高搜索效率,我们需要考虑运用多列索引,由于索引文件以B - Tree格式保存,所以我们不用扫描任何记录,即可得到最终结果。
- 注:在mysql中执行查询时,只能使用一个索引,如果我们在1name, fname , age上分别建索引,执行查询时,只能使用一个索引,mysql会选择一个最严格(获得结果集记录数最少)的索引。
- 最左前缀原则:顾名思义,就是最左优先,上例中我们创建了lname_fname_age多列索引,相当于创建了(lname)单列索引,(lname ,fname)组合索引以及( lname ,fname , age)组合索引。
索引是数据库中用于加速数据检索的数据结构,通过B树实现。它能提升查询速度,但也会影响增/改/删操作的效率。适合为频繁查询、外键、排序和分组字段建索引,而不适合频繁更新或数据分布均匀的字段。最左前缀原则在多列索引中很重要,确保有效利用索引。
10万+

被折叠的 条评论
为什么被折叠?



