动漫设计工作室网站推广方法,wdcp 修改默认网站,一起做网店,做网站设计最好的公司一、什么是索引#xff1f;
索引是一种特殊的文件#xff08;InnoDB数据表上的索引是表空间的一个组成部分#xff09;#xff0c;他们包含着对数据表里所有记录的引用指针。
索引是一种数据结构。数据库索引#xff0c;是数据库管理系统中一个排序的数据结构#xff0…一、什么是索引
索引是一种特殊的文件InnoDB数据表上的索引是表空间的一个组成部分他们包含着对数据表里所有记录的引用指针。
索引是一种数据结构。数据库索引是数据库管理系统中一个排序的数据结构以协助快速查找、更新数据库表中数据。索引的实现通常使用B树及其变种B树。
更通俗的说索引就相当于目录。为了方便查找书中的内容通过对内容建立索引形成目录。索引是一个文件他是要占据物理空间的。
二、索引有哪些优缺点
索引的优点
可以打打加快数据的检索速度这也是创建索引的最主要的原因。通过使用索引可以在查询的过程中使用优化隐藏器体改系统的性能。
索引的缺点
时间方面创建索引和维护索引要耗费时间具体地当对表中的数据进行增加、删除和修改的时候索引也要动态的维护会降低增删改的执行效率。空间方面索引需要栈物理内存。
三、索引使用场景有哪些 上图中根据id查询记录因为id字段仅建立了主键索引因此此SQL执行可选的索引只有主键索引如果有多个最终会选一个较优的作为检索的依据。
-- 增加一个没有建立索引的字段
alter table innodb1 add sex char(1);
-- 按sex检索时可选的索引为null
EXPLAIN SELECT * from innodb1 where sex男;可以尝试在一个字段未建立索引时根据该字段查询的效率然后对该字段建立索引alter table 表名 add index(字段名)同样的SQL执行的效率你会发现查询效率会有明显的提升数据量越大越明显。
order by
当我们使用order by将查询结果按照某个字段排序时如果该字段没有建立索引那么执行计划会将查询出的所有数据使用外部排序将数据从硬盘分批读取到内存使用内部排序最后合并排序结果这个操作是很影响性能的因为需要将查询涉及到的所有数据从磁盘中读到内存如果单条数据过大或者数据量过多都会降低效率更无论读到内存之后的排序了。
但是如果我们对该字段建立索引alter table 表名 add index(字段名)那么由于索引本身是有序的因此直接按照索引的顺序和映射关系逐条取出数据即可。而且如果分页的那么只用取出索引表某个范围内的索引对应的数据而不用像上述那取出所有数据进行排序再返回某个范围内的数据。从磁盘取数据是最影响性能的
join
对join语句匹配关系on涉及的字段建立索引能够提高效率
索引覆盖
如果要查询的字段都建立过索引那么引擎会直接在索引表中查询而不会访问原始数据否则只要有一个字段没有建立索引就会做全表扫描这叫索引覆盖。因此我们需要尽可能的在select后只写必要的查询字段以增加索引覆盖的几率。
这里值得注意的是不要想着为每个字段建立索引因为优先使用索引的优势就在于其体积小。
四、索引有哪几种类型
主键索引: 数据列不允许重复不允许为NULL一个表只能有一个主键。
唯一索引: 数据列不允许重复允许为NULL值一个表允许多个列创建唯一索引。
可以通过 ALTER TABLE table_name ADD UNIQUE (column); 创建唯一索引可以通过 ALTER TABLE table_name ADD UNIQUE (column1,column2); 创建唯一组合索引
普通索引: 基本的索引类型没有唯一性的限制允许为NULL值。
可以通过ALTER TABLE table_name ADD INDEX index_name (column);创建普通索引可以通过ALTER TABLE table_name ADD INDEX index_name(column1, column2, column3);创建组合索引
全文索引 是目前搜索引擎使用的一种关键技术。
可以通过ALTER TABLE table_name ADD FULLTEXT (column);创建全文索引