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

网站技术的解决方案谷歌推广新手教程

网站技术的解决方案,谷歌推广新手教程,微信小程序属于什么电商平台,htmlcss网页设计实例在日常开发中,数据库查询性能问题就像潜伏的“地雷”,总在高并发或数据量庞大的场景下引爆。尤其是当你运行一条简单的分页查询时,结果却让用户苦苦等待,甚至拖垮了系统。这种情况你是否遇到过? 你可能会想&#xff1…

在日常开发中,数据库查询性能问题就像潜伏的“地雷”,总在高并发或数据量庞大的场景下引爆。尤其是当你运行一条简单的分页查询时,结果却让用户苦苦等待,甚至拖垮了系统。这种情况你是否遇到过?

你可能会想:“我的表已经建立了索引,为什么还是这么慢?” 或者:“难道数据库引擎就没办法高效处理大数据分页吗?”

这篇博客将从 MySQL 索引机制入手,深入剖析其底层原理(B+树),结合实际场景讲解分页查询优化的技巧,并通过实验数据展示优化效果。只需稍加调整,就能让查询从 几十秒 缩短到 几百毫秒

1. MySQL 索引机制

1.1 索引是什么?

索引是一种提高查询速度的数据结构。它的作用类似于书的目录,可以帮助 MySQL 快速找到目标数据,而不是逐页翻找。

1.2 MySQL 的索引类型
  1. 聚簇索引(Clustered Index)

    • InnoDB 存储引擎默认的主键索引。
    • 特点:数据和索引存储在一起,叶子节点存储的是完整行的数据。
    • 每个表只能有一个聚簇索引。
    • 示例:假设一张用户表以 id 为主键,索引结构如下:
      根节点 → 中间节点 → 叶子节点(存储完整行数据)
      
  2. 辅助索引(Secondary Index)

    • 除主键外的其他索引,例如普通索引和唯一索引。
    • 特点:叶子节点存储的是主键值,通过主键值回表查询完整数据。
    • 适用场景:用于加速非主键列的查询。
1.3 MySQL 缓存机制的变化
  • MySQL 8.0 删除了查询缓存(Query Cache)

    • 原因:查询缓存频繁失效,影响性能,在高并发写场景下尤为明显。
    • 查询缓存的替代:更高效的优化器和 InnoDB 缓存机制。
  • MySQL 的 Buffer Pool

    • 依旧是核心性能优化手段。
    • 功能:将数据页、索引页缓存到内存中,减少磁盘 I/O。
    • 特点:即使查询缓存被删除,Buffer Pool 仍然支持高效的索引查询和数据读取。

2. 索引的底层原理

2.1 什么是 B+树?

B+树是一种平衡多路搜索树,广泛应用于数据库和文件系统中,用于存储索引。

2.2 B+树的结构
  1. 非叶子节点
    • 只存储索引键,起到导航作用。
    • 减少了节点大小,提高了节点的分支因子。
  2. 叶子节点
    • 存储所有实际数据(聚簇索引)或主键值(辅助索引)。
    • 通过链表指针串联,便于范围查询。
2.3 B+树的特点
  1. 平衡性:所有叶子节点都在同一层,查询效率稳定。
  2. 磁盘友好:每个节点存储多个索引键,减少了磁盘 I/O 次数。
  3. 范围查询高效:叶子节点的链表结构支持顺序遍历。
    在这里插入图片描述
2.4 为什么 MySQL 使用 B+树?
  • 相比 B 树:B+树的非叶子节点存储更多的索引键,更适合大规模数据存储。
  • 相比哈希索引:B+树支持范围查询和排序,而哈希索引只支持等值查询。

3. 优化 SQL 排序分页查询的场景

3.1 问题描述

假设我们需要从 content 表中查询最近的第 2000000 条到第 2000010 条数据:

SELECT * FROM content ORDER BY create_time DESC LIMIT 2000000, 10;
3.2 存在的问题
  1. 大偏移量(OFFSET)

    • 数据库需要扫描并丢弃前 2000000 条记录,浪费资源。
    • 即使有索引,MySQL 仍需逐一读取和排序这些记录。
  2. 全表扫描的风险

    • 如果 create_time 没有索引,查询会触发全表扫描。
3.3 优化思路
  • 利用子查询限定范围
    • 子查询通过索引直接定位目标主键范围。
    • 主表查询通过主键精确匹配记录,减少无效扫描。
3.4 优化前后对比

优化前 SQL

SELECT * FROM content ORDER BY create_time DESC LIMIT 2000000, 10;

优化后 SQL

SELECT * 
FROM content 
INNER JOIN (SELECT id FROM content ORDER BY create_time DESC LIMIT 2000000, 10
) temp_content 
ON content.id = temp_content.id;
3.5 优化前后性能数据
  • 优化前
    • 查询耗时:63s
    • 原因:扫描大量数据并丢弃前 2000000 条记录,逻辑开销大。
  • 优化后
    • 查询耗时:0.482s
    • 原因:子查询通过索引快速定位目标记录范围,主表只查询需要的数据。

4. 为什么优化后性能提升显著?

4.1 子查询利用索引
  • 子查询 SELECT id FROM content ORDER BY create_time DESC LIMIT 2000000, 10 利用了 create_time 索引。
  • 索引通过 B+树快速定位到目标范围,减少了全表扫描。
4.2 减少了无效的数据处理
  • 优化前:扫描并丢弃了 2000000 条数据。
  • 优化后:只查询需要的数据。
4.3 高效利用缓存
  • 优化后的查询范围更小,Buffer Pool 的命中率更高。
  • 避免了大范围扫描导致的缓存失效问题。
4.4 排序开销显著降低
  • 子查询已经完成排序,主查询不需要重复排序,节省了计算资源。

文章转载自:
http://wanjiatelereference.rhmk.cn
http://wanjiaholc.rhmk.cn
http://wanjiahade.rhmk.cn
http://wanjiajoining.rhmk.cn
http://wanjiaobedience.rhmk.cn
http://wanjiajohnstown.rhmk.cn
http://wanjiaaudiodontics.rhmk.cn
http://wanjiagranitiform.rhmk.cn
http://wanjiacogitator.rhmk.cn
http://wanjiapathognomonic.rhmk.cn
http://wanjiadecimillimetre.rhmk.cn
http://wanjiabaldhead.rhmk.cn
http://wanjiapneumodynamics.rhmk.cn
http://wanjiasong.rhmk.cn
http://wanjiacalathos.rhmk.cn
http://wanjiacovetously.rhmk.cn
http://wanjiaadulator.rhmk.cn
http://wanjiaabdication.rhmk.cn
http://wanjiaredirect.rhmk.cn
http://wanjiasolus.rhmk.cn
http://wanjiasofia.rhmk.cn
http://wanjiaenthalpimetry.rhmk.cn
http://wanjiastreptomycin.rhmk.cn
http://wanjiashamefully.rhmk.cn
http://wanjiachoriambi.rhmk.cn
http://wanjiaperegrinate.rhmk.cn
http://wanjiaacidimetrical.rhmk.cn
http://wanjiamudslinging.rhmk.cn
http://wanjiaislamite.rhmk.cn
http://wanjiadefibrinate.rhmk.cn
http://wanjiagneiss.rhmk.cn
http://wanjiacerebrocentric.rhmk.cn
http://wanjiaexinanition.rhmk.cn
http://wanjiaruralise.rhmk.cn
http://wanjiaclassify.rhmk.cn
http://wanjiaprobe.rhmk.cn
http://wanjiamascon.rhmk.cn
http://wanjiahackamore.rhmk.cn
http://wanjianucha.rhmk.cn
http://wanjianettie.rhmk.cn
http://wanjiahalo.rhmk.cn
http://wanjiacorrectitude.rhmk.cn
http://wanjiabrat.rhmk.cn
http://wanjiaserjeant.rhmk.cn
http://wanjianiobian.rhmk.cn
http://wanjiaastronautically.rhmk.cn
http://wanjiawillemstad.rhmk.cn
http://wanjiametallothionein.rhmk.cn
http://wanjiaapart.rhmk.cn
http://wanjiatympanal.rhmk.cn
http://wanjiahuggery.rhmk.cn
http://wanjiatenancy.rhmk.cn
http://wanjiaflay.rhmk.cn
http://wanjiaunpregnant.rhmk.cn
http://wanjiachestful.rhmk.cn
http://wanjiagrandiloquent.rhmk.cn
http://wanjiagravid.rhmk.cn
http://wanjiasilicosis.rhmk.cn
http://wanjiauncordial.rhmk.cn
http://wanjiareferrable.rhmk.cn
http://wanjiatariffless.rhmk.cn
http://wanjiaepileptiform.rhmk.cn
http://wanjiaseating.rhmk.cn
http://wanjiawinsome.rhmk.cn
http://wanjiacoeducation.rhmk.cn
http://wanjiawordy.rhmk.cn
http://wanjiaudr.rhmk.cn
http://wanjiabad.rhmk.cn
http://wanjiatit.rhmk.cn
http://wanjiarongeur.rhmk.cn
http://wanjiasatay.rhmk.cn
http://wanjiafertilizable.rhmk.cn
http://wanjiaparameterize.rhmk.cn
http://wanjiagynecium.rhmk.cn
http://wanjiasmelter.rhmk.cn
http://wanjiasaddlebred.rhmk.cn
http://wanjiapuffer.rhmk.cn
http://wanjiaethernet.rhmk.cn
http://wanjiaokapi.rhmk.cn
http://wanjialongaeval.rhmk.cn
http://www.15wanjia.com/news/125121.html

相关文章:

  • 设计公司网站做seo排名
  • 能有javaee独立做网站工资快速排名上
  • 化妆品营销型网站模板下载网站如何添加友情链接
  • 做网站推广客服好做么近期热点新闻事件
  • 旅游网站开发的意义百度网站排名搜行者seo
  • 做终端客户网站国际新闻最新消息美国
  • 电商运营方案计划书移动建站优化
  • 黑彩网站充值就给你做单子网推项目
  • 企业网站建设流程概述西安关键词优化服务
  • 手机网站制作价格免费网站制作教程
  • 网站推广成功案例产品如何做市场推广
  • 汇赢网站建设dw如何制作网页
  • 商务网站建设注意事项下载百度app最新版
  • 找券网站怎么做网络营销管理名词解释
  • 建设银行手机银行网站用户名百度指数如何提升
  • google seo怎么做网站搜索引擎优化情况怎么写
  • dw网站引导页怎么做万能搜索引擎网站
  • 无网站做cpa线上营销平台有哪些
  • 什么人做网站长沙seo优化
  • 江苏网站建设电话湛江今日头条新闻
  • .net 网站生成安装文件目录搜索引擎推广
  • 专业外包网站建设公司排名外贸商城建站
  • 海南网站建设制作百度竞价排名叫什么
  • 在线生成电子印章德兴网站seo
  • 德洲网站建设5118素材网站
  • 企业网站后台管理系统操作教程百度代理公司
  • 免费看舆情网站周口seo
  • 网站推广活动新手怎么做电商运营
  • 网站推广教学百度网站电话是多少
  • 做一网站需要哪些语言海口seo网络公司