当前位置: 首页 > wzjs >正文

网站改进建议营业推广策略有哪些

网站改进建议,营业推广策略有哪些,网站主页设计,数字广东网络建设有限公司网站1. 什么是回表? 回表(Back to Table) 指的是 在使用非聚簇索引(辅助索引)查询时,MySQL 需要 先通过索引找到主键 ID,然后再回到主键索引(聚簇索引)查询完整数据&#xf…

1. 什么是回表?

回表(Back to Table) 指的是 在使用非聚簇索引(辅助索引)查询时,MySQL 需要 先通过索引找到主键 ID,然后再回到主键索引(聚簇索引)查询完整数据,这一过程称为回表。


2. 回表的示例

假设有一张 users 表:

CREATE TABLE users (id INT PRIMARY KEY,       -- 主键name VARCHAR(50),         -- 用户名age INT,                  -- 年龄address VARCHAR(255),      -- 地址INDEX idx_name (name)      -- 创建 name 的辅助索引
) ENGINE=InnoDB;

如果执行以下查询:

SELECT address FROM users WHERE name = 'Alice';

查询执行过程:

  1. 先查 idx_name 索引,找到 name='Alice' 对应的 id(假设 id = 3)。
  2. 再回表查询,根据 id=3 在聚簇索引(主键索引)中找到 address 字段。

为什么要回表? 因为 idx_name 只存了 nameid,但 address 不在索引中,必须再回到主键索引查找完整数据。


3. 什么情况下会发生回表?

  • 查询的字段不在索引覆盖范围内(即非覆盖索引查询)。
  • 使用二级索引(非主键索引)查询,而查询的字段不在索引列中。

4. 如何避免回表?

(1)使用覆盖索引

如果查询的字段已经包含在索引中,就可以避免回表

CREATE INDEX idx_name_age ON users(name, address);

然后执行:

SELECT address FROM users WHERE name = 'Alice';

此时,idx_name_age 索引已经包含 nameaddress,所以可以直接在索引中获取数据,不需要回表

(2)使用主键查询

如果使用 id(主键)查询,就不需要回表:

SELECT address FROM users WHERE id = 3;

因为 InnoDB 的主键索引(聚簇索引)本身就存储了完整数据,所以查询 id 不会回表。


5. 总结

查询方式是否回表原因
主键查询 (SELECT * FROM users WHERE id = 3)不会因为主键索引(聚簇索引)包含完整数据
非主键索引查询 (SELECT address FROM users WHERE name = ‘Alice’)会回表先查 name 索引,再回表查 address
覆盖索引查询 (SELECT name FROM users WHERE name = ‘Alice’)不会name 索引已经包含查询字段

🚀 结论: MySQL InnoDB 避免回表的方法

  1. 尽量使用覆盖索引(让查询的所有字段都包含在索引中)。
  2. 使用主键查询,避免使用非主键索引查询非索引字段。
  3. 分析 EXPLAIN 结果,关注 Extra 字段是否包含 "Using index"(表示使用了覆盖索引)。

这样可以减少回表,提高查询性能!🚀

6. 拓展:二级索引的叶子节点和非叶子节点存储内容**

6.1 二级索引 B+ 树结构示意

假设有如下 users 表:

CREATE TABLE users (id INT PRIMARY KEY,  -- 聚簇索引name VARCHAR(50),age INT,INDEX idx_age (age)   -- 二级索引
);

其中,表中的数据如下:

idnameage
1Alice25
2Bob30
3Charlie35

6.2 完整的二级索引 B+ 树结构
                (30)/    \(25)      (35)/      \     /    \(age=25,id=1) (age=30,id=2) (age=35,id=3)
6.3 📌 结构解析
  • 非叶子节点(索引键)
    • 只存储 索引列 age,用于 快速查找数据所在的叶子节点
    • 例如,30 代表左侧存 <30 的数据,右侧存 >=30 的数据。
  • 叶子节点(存储实际索引数据)
    • 存储 索引列 age主键 id,但 不存储完整数据
    • 例如,叶子节点 (age=30, id=2) 说明 age=30 的数据,主键 id=2
    • 叶子节点 通过主键 id 回表查询完整数据

6.4 二级索引查询流程

查询 SELECT * FROM users WHERE age = 30;

  1. 从非叶子节点找到 30 对应的叶子节点。
  2. 叶子节点存储 (age=30, id=2),返回 id=2。
  3. 回表:用 id=2 查询 users 表的主键索引,获取完整数据。

6.5 🔥 关键点总结
  1. 非叶子节点 只存索引 key(age),不存储数据
  2. 叶子节点age主键 ID,用于返回 ID 进行回表查询。
  3. 回表查询 是因为 二级索引不存完整数据,需要用主键 ID 进一步查询。
  4. 优化方式:
    • 覆盖索引(例如 INDEX idx_age_name (age, name)),让查询字段直接存入索引,避免回表。
    • 合理设计主键,避免主键过大影响二级索引的存储效率。

这样,你对二级索引的 存储结构和查询流程 是否更加清晰了呢? 😊🚀

http://www.dtcms.com/wzjs/254159.html

相关文章:

  • 网站打开速度太慢seo文章推广
  • 网站建设 制作流量神器
  • 网站建设推广方案模版全国广告投放平台
  • 泰州网站制作企业百度推广服务
  • 用手机建立网站小红书sem是什么意思
  • 如何写网站建设实验结果分析如何推广品牌知名度
  • 富阳网站制作seo排名查询工具
  • 如何在社交网站上做视频推广常见的营销型网站
  • 常州网站建设麦策电商网络服务包括
  • 北京高端建设网站网店推广策划书
  • 广州专业网站制作哪家专业seo诊断书案例
  • 知名做网站app开发需要多少钱
  • 企业网站的建设与维护软文推广代理平台
  • 网建短信seo免费优化网站
  • 网站建设属于什么费用广告联盟怎么赚钱
  • 无代码开发原理网站关键词优化有用吗
  • 成都网站建设托管优化网站排名公司
  • 昆明餐饮网站建设seo主要做什么工作内容
  • 太原网站关键词排名seop
  • 不会写代码如何做网站精准数据营销方案
  • 电脑网站设计公司百度快照推广效果怎样
  • 推荐企业手机网站建设怎么恶意点击对手竞价
  • 网站建设 技术支持 阿里广告模板
  • 展示型网站可以做推广的吗优化 seo
  • 安阳县疫情最新消息网站关键词免费优化
  • 江阴做网站公司推广渠道有哪些
  • 企业查天眼查在线roseonly企业网站优化
  • 网站怎么加内容网站做成app
  • wordpress 手机悬浮seo服务商
  • 湖南省建设工程网站百度搜索关键词规则