96SEO 2026-02-23 15:09 19
关于数据库设计与优化的前几篇文章中我们提到了数据库设计优化应该遵守的指导原则、数据库底层的索引组织结构、数据库的核心功能组件以及SQL的解析、编译等。

这些其实都是在为SQL的优化、执行的理解打基础。
今天这篇文章我们以MySQL中InnoDB存储引擎中的数据索引组织及一条SQL的物理执行过程来更直观的理解数据库中我们提交一条SQL后数据库默默帮我们做的事情。
我们依然以前一篇文章中的t_customer表为例建表语句如下
会员信息表;然后我们编写一个Python脚本利用Faker框架来生成测试数据
pymysql.connect(hostdb_cfg.host,
passworddb_cfg.password,databasedb_cfg.database)
GenderProvider(BaseProvider):def
fk.add_provider(GenderProvider)
range(10000):cursor.execute(sql.format(fk.name(),
其实这里我们只是从数据组织结构上展开SQL的执行没有测试数据也没啥影响。
不过还是强烈建议感兴趣的了解下Python很好用很好玩。
这里不再展开需要理解的可以看下笔者关于Python的相关系列文章。
B树索引就是传统意义上的索引也是目前关系型数据库系统中查找最为常用和最有效的索引。
需要注意的是从使用的角度来看B树索引的构造类似于二叉树根据键值(key
B树中的B不是表示二叉(binary)而是代表平衡(balance)因为B树是从最早的平衡二叉树演化而来的但是B树不是一个二叉树树结构的索引只有是平衡树才能降低树的高度从而降低基于索引检索的磁盘IO的次数B树索引实际上并不能通过一个给定的键值查到具体的某一行数据而是只能找到被查找符合键值的数据所在的页这些数据按照键值顺序进行组织存储。
然后数据库通过把页读入内存然后在内存中执行进一步的查找操作最终得到要查找的数据。
后续我们简化一下操作假设每个页都只存储一条数据以便更好地进行表述、理解关于数据以页为单位进行读取前面的文章中已经提到可以更好地利用程序的局部性原理从而提高检索的效率
引言中已经提到我们这里以MySQL的InnoDB存储引擎为例进行介绍其他数据库中的底层原理也基本类似。
1假设数据库的优化器最终决定要走idx_city这个索引进行SQL的执行主要的执行过程大概如下
name的值放入内存缓冲区重复前两个步骤直到在idx_city索引中找到的city值不满足查询条件为止将内存缓冲区的数据返回给用户
上面的这条SQL首先从idx_city索引中找到主键id然后再到聚簇索引中找到整行记录然后还要判断是否符合条件再决定是否返回改行数据。
这种查询场景叫做”回表“。
回表的操作会增加磁盘IO的次数如果辅助索引结构中已经包含了用户需要的所有字段则可以避免回表的操作这时候的索引叫做”覆盖索引“。
现在这条要执行的SQL中添加了排序及limit操作执行的过程会发生相应的调整假设优化器还是选择了要走idx_city这个索引
name的值放入排序缓冲区sor_buffer中重复前两个步骤直到在idx_city索引中找到的city值不满足查询条件为止对sort_buffer中的数据按照字段name进行快速排序按照排序结果的数据取出前100条返回给用户
其实涉及到排序的话问题会突然变得复杂起来这里简单描述下可能的情况
1、符合条件的行数很多sort_buffer中放不下这时候就不能直接基于内存的排序算法进行了就需要我们前面文章提到的TPMMS的算法了进行基于磁盘的多路归并排序
2、加入最终返回的字段比较多执行引擎在执行的过程中可能决定不将所有字段都放入sort_buffer可能只放主键id和参与排序的字段然后排序完成之后需要再按序进行一次回表的操作获取用户需要的所有字段然后再返回给用户。
基于是否将所有字段放入sort_buffer中排序的操作符可以简单分为全字段排序和rowid排序。
实际上SQL的执行要考虑的真实场景比较复杂本文为了便于描述与理解做了相应的简化感兴趣的可以自行研究。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback