如何免费推广网站并确保备案成功?
摘要:网站的备案all,免费推广的手段和方法,网站内容和功能清单,wordpress 会员制 主题目录 索引的分类 什么时候需要不需要创建索引? 有什么优化索引的方法 MySQL索引主要使用的两种数据结构是什么
网站的备案all,免费推广的手段和方法,网站内容和功能清单,wordpress 会员制 主题目录 索引的分类
什么时候需要 / 不需要创建索引#xff1f;
有什么优化索引的方法
MySQL索引主要使用的两种数据结构是什么
为什么 MySQL 采用 B 树作为索引
聚簇索引和二级索引
根据给定的表#xff0c;如何创建索引比较好 索引的分类
普通索引#xff1a;最基本的…目录 索引的分类
什么时候需要 / 不需要创建索引
有什么优化索引的方法
MySQL索引主要使用的两种数据结构是什么
为什么 MySQL 采用 B 树作为索引
聚簇索引和二级索引
根据给定的表如何创建索引比较好 索引的分类
普通索引最基本的索引没有任何限制唯⼀索引与普通索引类似但索引列的值必须是唯⼀的允许空值主键索引⼀种特殊的唯⼀索引⼀个表只能有⼀个主键不允许有空值组合索引在多个字段上创建的索引只有在查询条件中使⽤了创建索引的第⼀个字段索引才会被使⽤全⽂索引主要⽤来查找⽂本中的关键字类似于搜索引擎
普通索引仅加速查询唯一索引加速查询 列值唯一可以有null主键索引加速查询 列值唯一不可以有null 表中只有一个组合索引多列值组成一个索引专门用于组合搜索其效率大于索引合并全文索引对文本的内容进行分词进行搜索索引合并使用多个单列索引组合搜索覆盖索引select的数据列只用从索引中就能够取得不必读取数据行换句话说查询列要被所建的索引覆盖聚簇索引表数据是和主键一起存储的主键索引的叶结点存储行数据(包含了主键值)二级索引的叶结点存储行的主键值。使用的是B树作为索引的存储结构非叶子节点都是索引关键字但非叶子节点中的关键字中不存储对应记录的具体内容或内容地址。叶子节点上的数据是主键与具体记录(数据内容) 什么时候需要 / 不需要创建索引
索引最大的好处是提高查询速度但是索引也是有缺点的比如
需要占用物理空间数量越大占用空间越大创建索引和维护索引要耗费时间这种时间随着数据量的增加而增大会降低表的增删改的效率因为每次增删改索引B 树为了维护索引有序性都需要进行动态维护。
什么时候适用索引
字段有唯一性限制的比如商品编码经常用于 WHERE 查询条件的字段这样能够提高整个表的查询速度如果查询条件不是一个字段可以建立联合索引。经常用于 GROUP BY 和 ORDER BY 的字段这样在查询的时候就不需要再去做一次排序了因为我们都已经知道了建立索引之后在 BTree 中的记录都是排序好的。
什么时候不需要创建索引
WHERE 条件GROUP BYORDER BY 里用不到的字段索引的价值是快速定位如果起不到定位的字段通常是不需要创建索引的因为索引是会占用物理空间的。字段中存在大量重复数据不需要创建索引比如性别字段只有男女如果数据库表中男女的记录分布均匀那么无论搜索哪个值都可能得到一半的数据。在这些情况下还不如不要索引因为 MySQL 还有一个查询优化器查询优化器发现某个值出现在表的数据行中的百分比很高的时候它一般会忽略索引进行全表扫描。表数据太少的时候不需要创建索引经常更新的字段不用创建索引比如不要对电商项目的用户余额建立索引因为索引字段频繁修改由于要维护 BTree的有序性那么就需要频繁的重建索引这个过程是会影响数据库性能的。 有什么优化索引的方法
这里说一下几种常见优化索引的方法
前缀索引进行优化覆盖索引进行优化主键索引最好是自增的防止索引失效
前缀索引进行优化
前缀索引顾名思义就是使用某个字段中字符串的前几个字符建立索引那我们为什么需要使用前缀来建立索引呢
使用前缀索引是为了减小索引字段大小可以增加一个索引页中存储的索引值有效提高索引的查询速度。在一些大字符串的字段作为索引时使用前缀索引可以帮助我们减小索引项的大小。
不过前缀索引有一定的局限性例如
order by 就无法使用前缀索引无法把前缀索引用作覆盖索引
覆盖索引进行优化
覆盖索引是指 SQL 中 query 的所有字段在索引 BTree 的叶子节点上都能找得到的那些索引从二级索引中查询得到记录而不需要通过聚簇索引查询获得可以避免回表的操作。这种索引设计能够显著提高查询性能因为它减少了磁盘I/O操作和数据的传输。
假设我们只需要查询商品的名称、价格有什么方式可以避免回表呢
我们可以建立一个联合索引即「商品ID、名称、价格」作为一个联合索引。如果索引中存在这些数据查询将不会再次检索主键索引从而避免回表。
所以使用覆盖索引的好处就是不需要查询出包含整行记录的所有信息也就减少了大量的 I/O 操作。
