w3c网站模板/营销活动方案模板

w3c网站模板,营销活动方案模板,腾讯风铃做的网站有期限吗,初中做数学题的网站0.前言 假设你经营一家电商平台,某天用户突然投诉商品搜索加载时间超过10秒。技术团队紧急排查,发现一条原本执行0.1秒的查询语句,在百万级数据量下竟变成了全表扫描。这时,数据库索引犹如深夜急诊室里的救命仪器——它的存在与否…

0.前言

假设你经营一家电商平台,某天用户突然投诉商品搜索加载时间超过10秒。技术团队紧急排查,发现一条原本执行0.1秒的查询语句,在百万级数据量下竟变成了全表扫描。这时,数据库索引犹如深夜急诊室里的救命仪器——它的存在与否,直接决定系统是起死回生还是彻底崩溃。

索引设计的底层逻辑如同城市交通规划。想象早高峰时的十字路口,无序的车流必然引发堵塞。B+树结构通过分层导航,让数据查询像ETC通道般快速通行。某金融平台曾将交易记录的查询响应时间从8秒缩短至0.2秒,秘密就在于将单列索引改造为组合索引,如同在十字路口增设定向车道。

1.索引设计原则

  • 代码先行,索引后上:给数据库表添加索引,一般应该等到主体业务功能开发完毕,把涉及到该表相关sql都要拿出来分析之后再建立索引。

  • 高频查询列:优先为 WHERE、JOIN、ORDER BY、GROUP BY 等子句中频繁使用的列创建索引。

  • 避免低基数列:低基数列(如性别、状态等重复值多的列)不适合创建索引,因为它们的区分度低,索引效果不明显。尽量使用那些基数比较大的字段,就是值比较多的字段,那么才能发挥出B+树快速二分查找的优势来。列的唯一性越高,索引效果越好。

  • 联合索引尽量覆盖条件:对于多列查询,优先使用组合索引(多列索引),但需遵循最左前缀原则。同时将查询中使用频率最高的列放在前面,同时考虑查询的过滤性,将过滤性更强的列放在前面。

  • 长字符串可以采用前缀索引:尽量对字段类型较小的列设计索引,比如说什么tinyint之类的,因为字段类型较小的话,占用磁盘空间也会比较小,在搜索的时候性能也会比较好一点。对于长字符串列(如 VARCHAR),可以使用前缀索引(如 CREATE INDEX idx_name ON users(name(10))),以节省空间。

  • 选择合适的索引类型:优先使用自增整数作为主键,避免使用 UUID 等无序主键。

  • 控制索引数量:索引会增加写操作(INSERT/UPDATE/DELETE)的开销。建议单表索引不超过 5个,避免冗余索引。优先建联合索引。查询时调整SQL条件顺序,使其与索引列的顺序一致。

2.索引优化

分页查询优化

很多时候我们业务系统实现分页功能可能会用如下sql实现

SELECT * FROM orders ORDER BY id LIMIT 10000, 10;

表示从表 orders 中取出从 10001 行开始的 10 行记录。看似只查询了 10 条记录,实际这条 SQL 是先读取 10010条记录,然后抛弃前 10000 条记录,然后读到后面 10 条想要的数据。因此要查询一张大表比较靠后的数据,执行效率是非常低的。

优化1:根据自增且连续的主键排序的分页查询

SELECT * FROM orders WHERE id > 100000 ORDER BY id LIMIT 10;

优化2:根据非主键字段排序的分页查询

SELECT * FROM orders ORDER BY name LIMIT 10000, 10;

关键是让排序时返回的字段尽可能少,所以可以让排序和分页操作先查出主键,然后根据主键查到对应的记录,SQL改写如下:

select * from orders e inner join (select id from orders order by name limit 90000,5) ed
on e.id = ed.id;

Join关联查询优化

优化1:关联字段加索引;

优化2:优先选择小表做驱动表。

一次一行循环地从第一张表(称为驱动表)中读取行,在这行数据中取到关联字段,根据关联字段在另一张表(被驱动表)里取出满足条件的行,然后取出两张表的结果合集。

当使用left join时,左表是驱动表,右表是被驱动表,当使用right join时,右表时驱动表,左表是被驱动表,
当使用join时,mysql会选择数据量比较小的表作为驱动表,大表作为被驱动表。

in和exsits优化

原则:小表驱动大表,即小的数据集驱动大的数据集

in:当B表的数据集小于A表的数据集时,in优于exists

select * from A where id in (select id from B)

exists:当A表的数据集小于B表的数据集时,exists优于in

将主查询A的数据,放到子查询B中做条件验证,根据验证结果(true或false)来决定主查询的数据是否保留

select * from A where exists (select 1 from B where B.id = A.id)

3.最后

通过合理设计索引,可以显著提升 MySQL 的查询性能,同时减少系统资源的消耗。在实际应用中,建议根据具体场景灵活调整索引设计和查询语句,以达到最佳的性能表现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/895442.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C语言】C语言 实践课题选题系统(源码+报告+数据文件)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。 系C语言 实践课题选题系统(源码报告数据…

基于SpringBoot的“高考志愿智能推荐系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“高考志愿智能推荐系统”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统总体结构图 系统首页界面 系统注册页…

React 低代码项目:组件设计

React 低代码项目:组件设计 Date: February 6, 2025 React表单组件 **目标:**使用 Ant Design 表单组件,开发登录、注册、搜索功能 内容: 使用 React 表单组件、受控组件使用 Ant Design 表单组件使用 表单组件的校验和错误提…

QCustomplot库运用

最近需要用到这个库显示数据,需要在一个曲线图4个Y轴共用一个X轴,并且做游标,跟随鼠标移动,并且实时反馈数据到表格中。记录一下程序。 customPlot new QCustomPlot(this); customPlot->setBackground(QBrush(QColor(204,204,…

股指期货是什么?股指期货日内拐点有什么特征?

股指期货是一种金融衍生品,股指期货日内拐点就是在一天交易过程中,市场走势发生显著改变的那个点。 股指期货是什么? 股指是一个指数,比如上证50指数、沪深300指数、中证500指数以及中证1000指数,这是一堆股票的一个整…

【16届蓝桥杯寒假刷题营】第1期DAY4

1.披萨和西蓝花 - 蓝桥云课 1. 披萨和西蓝花 问题描述 在接下来的 N 天里(编号从 1 到 N),坤坤计划烹饪披萨或西兰花。他写下一个长度为 N 的字符串 A,对于每个有效的 i,如果字符 Ai 是 1,那么他将在第 i…

你需要了解的远程登录协议——Telnet

你需要了解的远程登录协议——Telnet 一. 什么是Telnet?二. Telnet的优缺点三. Telnet vs SSH:哪一个更适合?四. Telnet的应用场景 前言 点个免费的赞和关注,有错误的地方请指出,看个人主页有惊喜。 作者:神…

PHP在线题库小程序

📚 在线题库小程序:学习提分新神器,轻松跃升学霸行列 这是一款专为追梦学子精心策划、基于ThinkPHPUniApp框架匠心打造的在线题库类微信小程序系统。它宛如一把✨智慧钥匙✨,为追求高效学习的你解锁🔓知识宝库的大门。…

Unity-Mirror网络框架-从入门到精通之Pong示例

文章目录 前言示例介绍NetworkManagerPongBallPlayer总结前言 在现代游戏开发中,网络功能日益成为提升游戏体验的关键组成部分。本系列文章将为读者提供对Mirror网络框架的深入了解,涵盖从基础到高级的多个主题。Mirror是一个用于Unity的开源网络框架,专为多人游戏开发设计…

布隆过滤器到底是什么东西?它有什么用

布隆过滤器:用概率换空间的奇妙数据结构 引言:当空间成为奢侈品 在互联网每天产生2.5万亿字节数据的时代,Google每秒处理超过9万次搜索请求,Redis缓存系统支撑着百万级QPS的访问。面对如此海量的数据处理需求,传统的…

OutSystems Platform Tools Platform Services

概述(Overview) outsystems是一整套低代码的企业级应用(WEB 和 移动端)的开发环境。 本文主要讲解outsystems的Platform Tools与Platform Services 平台工具(Platform Tools) 集成开发环境IDE&#xff0…

飞书专栏-TEE文档

CSDN学院课程连接:https://edu.csdn.net/course/detail/39573

2025.2.11——一、[极客大挑战 2019]PHP wakeup绕过|备份文件|代码审计

题目来源:BUUCTF [极客大挑战 2019]PHP 目录 一、打开靶机,整理信息 二、解题思路 step 1:目录扫描、爆破 step 2:代码审计 1.index.php 2.class.php 3.flag.php step 3:绕过__wakeup重置 ​编辑 三、小结…

考研操作系统----操作系统的概念定义功能和目标(仅仅作为王道哔站课程讲义作用)

目录 操作系统的概念定义功能和目标 操作系统的四个特征 操作系统的分类 ​编辑 操作系统的运行机制 系统调用 操作系统体系结构 操作系统引导 虚拟机 操作系统的概念定义功能和目标 什么是操作系统: 操作系统是指控制和管理整个计算机系统的软硬件资源&…

DeepSeek 突然来袭,AI 大模型变革的危机与转机藏在哪?

随着人工智能技术的飞速发展,大模型领域不断涌现出具有创新性的成果。DeepSeek 的横空出世,为 AI 大模型领域带来了新的变革浪潮。本文将深入探讨 DeepSeek 出现后 AI 大模型面临的危机与转机。 冲冲冲!!! 目录 一、…

JVM的类加载器

什么是类加载器? 类加载器:JVM只会运行二进制文件,类加载器的作用就是将字节码文件加载到JVM中,从而Java 程序能够启动起来。 类加载器有哪些? 启动类加载器(BootStrap ClassLoader):加载JAVA HOME/jre/lib目录下的库…

web前端开发中vscode常用的快捷键

1.快速复制一行 快捷键: shiftalt 下箭头(上箭头) 或者 ctrlc 然后 ctrlv 2.选定多个相同的单词 快捷键: ctrl d 先双击选定一个单词,然后按下 ctrl d 可以往下依次选择相同的单词。 这样同时修改相同的单词 3.全局替换某单词 当我们一个…

Jenkins 部署 之 Mac 一

Jenkins 部署 之 Mac 一 一.Jenkins 部署依赖 JDK 环境 查看 Mac JDK 环境,如果没有安装,先安装 打开终端输入命令:java -version Mac安装配置 JDK 二. 检查 HomeBrew 安装 检查 HomeBrew 是否安装,终端输入命令:brew -v Mac安装HomeB…

鸿蒙HarmonyOS NEXT开发:优化用户界面性能——组件复用(@Reusable装饰器)

文章目录 一、概述二、原理介绍三、使用规则四、复用类型详解1、标准型2、有限变化型2.1、类型1和类型2布局不同,业务逻辑不同2.2、类型1和类型2布局不同,但是很多业务逻辑公用 3、组合型4、全局型5、嵌套型 一、概述 组件复用是优化用户界面性能&#…

【AI大模型】Ollama部署本地大模型DeepSeek-R1,交互界面Open-WebUI,RagFlow构建私有知识库

文章目录 DeepSeek介绍公司背景核心技术产品与服务应用场景优势与特点访问与体验各个DeepSeek-R系列模型的硬件需求和适用场景 Ollama主要特点优势应用场景安装和使用配置环境变量总结 安装open-webui下载和安装docker desktop配置镜像源安装open-webui运行和使用 RagFlow介绍主…