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

基于 FastAPI + Vue 深度定制的全栈自动化执行引擎设计全解

MySQL 中的 count 三兄弟效率大比拼一、快速结论先看结论再看分析方式 作用 效率 一句话总结count(*) 统计所有行数 最高 我是专业的我为统计而生count(1) 统计所有行数 同样高效 我是 count(*) 的马甲兄弟count(列名) 统计该列非 NULL 的行数 ? 较慢 我挑剔我只数非空值结论用 count(*) 就对了 ?二、代码示例亲测三兄弟的差别准备测试数据-- 创建测试表CREATE TABLE user_test (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50),age INT,email VARCHAR(100));-- 插入测试数据故意插入一些NULL值INSERT INTO user_test (name, age, email) VALUES(张三, 25, zhangsanexample.com),(李四, NULL, NULL),(王五, 30, wangwuexample.com),(NULL, 28, unknownexample.com),(赵六, 35, NULL);测试查询-- 查看表中的数据SELECT * FROM user_test;/*--------------------------------------| id | name | age | email |--------------------------------------| 1 | 张三 | 25 | zhangsanexample...|| 2 | 李四 | NULL | NULL || 3 | 王五 | 30 | wangwuexample.com || 4 | NULL | 28 | unknownexample.com|| 5 | 赵六 | 35 | NULL |--------------------------------------*/-- 测试1count(*) 统计所有行数SELECT count(*) FROM user_test; -- 结果5 ?-- 翻译老板我有多少行数据全都要-- 测试2count(1) 统计所有行数SELECT count(1) FROM user_test; -- 结果5 ?-- 翻译老板你给我个固定值1我数有多少个1-- 测试3count(列名) 统计非NULL的行数SELECT count(name) FROM user_test; -- 结果4 ?NULL的那行没算SELECT count(age) FROM user_test; -- 结果4 ?NULL的那行没算SELECT count(email) FROM user_test; -- 结果3 ?两个NULL都没算-- 翻译我只数有身份证的人黑户不算三、深入剖析它们到底有啥不同1. 语义区别最重要的区别-- count(*) 是 SQL 标准写法-- 意思给我这个表有多少行数据-- 相当于这个会议室有多少个座位-- count(1) 是 count(*) 的一种写法-- 意思统计有多少个1-- 相当于给每个座位发个苹果最后数苹果-- count(列名) 是统计该列非NULL值的数量-- 意思这个会议室有多少人带了手机-- 相当于检查每个座位如果有人带了手机就计数2. 性能区别神话与现实传说中的误解count(1) 比 count(*) 快 ?count(主键) 最快 ?现实真相MySQL 5.7 及以后版本count(*) 和 count(1) 性能完全相同MySQL 优化器会把它们当作一回事查看执行计划证明EXPLAIN SELECT count(*) FROM user_test;EXPLAIN SELECT count(1) FROM user_test;EXPLAIN SELECT count(id) FROM user_test;-- 你会看到前两个的执行计划完全一样性能排序一般情况count(*) ≈ count(1) ?count(主键列)count(非主键有索引列) ?count(非主键无索引列)为什么 count(列名) 可能更慢-- 假设 email 列有索引SELECT count(email) FROM user_test;/*MySQL 需要1. 读取索引如果该列有索引2. 检查每个值是否为 NULL3. 只计数非 NULL 的如果 email 列没有索引1. 读取整行数据比 count(*) 读的更多2. 检查 email 是否为 NULL3. 只计数非 NULL 的*/3. 特殊情况分析-- 情况1所有列都不允许NULLCREATE TABLE user_not_null (id INT PRIMARY KEY NOT NULL,name VARCHAR(50) NOT NULL);-- 这时候count(*) count(id) count(name)-- 情况2空表 vs NULL值CREATE TABLE empty_table (id INT);SELECT count(*) FROM empty_table; -- 结果0SELECT count(id) FROM empty_table; -- 结果0INSERT INTO empty_table VALUES (NULL);SELECT count(*) FROM empty_table; -- 结果1SELECT count(id) FROM empty_table; -- 结果0 ?四、实际工作中的选择指南场景1统计总行数-- ? 正确做法SELECT count(*) FROM orders;-- ? 错误做法SELECT count(order_id) FROM orders; -- 万一有NULL呢SELECT count(1) FROM orders; -- 能用但不是标准场景2统计有效数据数量-- 统计有多少用户填写了邮箱SELECT count(email) FROM users; -- ? 这个场景就该用 count(列名)-- 统计已完成订单数量假设 status2 是已完成SELECT count(*) FROM orders WHERE status 2; -- ?场景3统计非重复值-- 统计有多少个不同的城市SELECT count(DISTINCT city) FROM users; -- ? count DISTINCT-- 统计有多少个城市排除 NULLSELECT count(DISTINCT city) FROM users; -- DISTINCT 会自动排除 NULL五、性能优化技巧1. 大表优化方案-- 方案1使用近似值适用于统计概览SELECT TABLE_ROWSFROM information_schema.TABLESWHERE TABLE_SCHEMA your_db AND TABLE_NAME big_table;-- 方案2分页总数缓存适用于列表页-- 第一次查询时缓存总数后面定时更新-- 方案3使用汇总表CREATE TABLE stats_daily (date DATE PRIMARY KEY,user_count INT,order_count INT);2. 索引优化-- 为 count(列名) 创建索引CREATE INDEX idx_email ON users(email);-- 但注意count(*) 不一定需要索引InnoDB有优化六、有趣比喻帮你记忆汉堡店排队比喻-- 有10个人在排队买汉堡count(*) 队列里有10个人 ?count(1) 我给每人发个号码牌数有10个牌 ?count(现金) 只有8个人带了现金 ?count(会员卡) 只有5个人有会员卡 ?教室点名比喻-- 教室里有50个座位count(*) 教室有50个座位 ?count(1) 我在每个座位放本书最后数有50本 ?count(学生) 今天来了45个学生上课 ?空座位不算七、总结与最佳实践最终建议统计总行数一律用 count(*)这是 SQL 标准写法性能最优MySQL有专门优化语义最明确统计某列非 NULL 数量用 count(列名)这是它的本职工作不要用它统计总行数关于 count(1)性能与 count(*) 一样但不够标准像方言建议统一用 count(*)性能关键点大表避免频繁 count考虑使用缓存或汇总表为 count(列名) 的列加索引一张图看懂count(*) - 总数 - 最快 - 推荐使用↓count(1) - 总数 - 一样快 - 可用但不标准↓count(主键) - 总数 - 次快 - 主键非NULL时可用↓count(索引列) - 非NULL数 - 较慢 - 有索引时可用↓count(普通列) - 非NULL数 - 最慢 - 谨慎使用记住口诀数总数用星号数非空列名好数字1虽高效不是标准别当宝骄星筒狡

相关文章:

基于 FastAPI + Vue 深度定制的全栈自动化执行引擎设计全解

MySQL 中的 count 三兄弟:效率大比拼! 一、快速结论(先看结论再看分析) 方式 作用 效率 一句话总结 count(*) 统计所有行数 最高 我是专业的!我为统计而生 count(1) 统计所有行数 同样高效 我是 count(*) 的马甲兄弟…...

Python 操作 Word 页眉页脚完整指南

加班到晚上十点,我终于改完了那份50页的季度报告。按下保存,关掉电脑,心里想着明天终于可以交差了。结果第二天一早,领导说:“小张,报告做得不错,但每页顶部加上公司Logo和保密级别,…...

Zotero SciPDF插件终极指南:三步实现文献PDF自动下载

Zotero SciPDF插件终极指南:三步实现文献PDF自动下载 【免费下载链接】zotero-scipdf Download PDF from Sci-Hub automatically For Zotero7 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-scipdf 还在为文献下载而烦恼吗?Zotero SciPDF插…...

卡内基梅隆大学:AI智能体社交网络中的隐私危机比想象的更严重

这项由卡内基梅隆大学研究团队主导的前沿研究于2026年4月发表在预印本平台上,论文编号为arXiv:2604.01487v2。研究团队开发了名为AgentSocialBench的全新评估基准,这是世界上首个专门用于测试以人为中心的AI智能体社交网络中隐私风险的系统性工具。当我们…...

C++ STL常用容器1——string容器

写在前面:⭐如果本篇博文对你有帮助,那就关注 点赞 收藏一下吧! 目录 1.string基本概念 2.string构造函数 3.string容器 4.string字符串拼接 5.string查找和替换 6.string字符串比较 7.string字符存取 8.string插入和删除 9.strin…...

量化后VQA准确率暴跌17.3%?——多模态模型INT4压缩的5个反直觉陷阱与工业级绕过策略

第一章:量化后VQA准确率暴跌17.3%?——多模态模型INT4压缩的5个反直觉陷阱与工业级绕过策略 2026奇点智能技术大会(https://ml-summit.org) 在真实产线部署中,将ViLT或BLIP-2等VQA主干模型从FP16压缩至INT4常导致准确率断崖式下跌——某金融…...

kali 软件源设置为国内站点配置详解

Kali Linux 国内镜像源配置指南备份原始源列表执行以下命令备份原始配置文件&#xff1a;sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak阿里云镜像源配置sudo tee /etc/apt/sources.list << EOF deb https://mirrors.aliyun.com/kali kali-rolling main non-…...

Blender3mfFormat插件深度解析:3D打印工作流中的关键技术实现与性能优化

Blender3mfFormat插件深度解析&#xff1a;3D打印工作流中的关键技术实现与性能优化 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 在3D打印行业蓬勃发展的今天&#xf…...

JetBrains IDE评估期重置技术解析:跨平台配置清理与插件化实现方案

JetBrains IDE评估期重置技术解析&#xff1a;跨平台配置清理与插件化实现方案 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 在JetBrains系列IDE开发环境中&#xff0c;评估期限制是开发者在学习和测试阶段面临…...

d3d9.dll文件丢失怎么办?教你免费下载修复方法

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…...

D3DCompiler_47.dll文件不存在 无法启动问题 教你免费下载方法

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…...

网盘直链下载助手:2025年最完整的跨平台云盘下载解决方案

网盘直链下载助手&#xff1a;2025年最完整的跨平台云盘下载解决方案 【免费下载链接】baiduyun 油猴脚本 - 一个免费开源的网盘下载助手 项目地址: https://gitcode.com/gh_mirrors/ba/baiduyun 在当今数据驱动的时代&#xff0c;云存储服务已成为个人和企业数据管理的…...

【2026最硬核AI底层能力】:AIAgent元学习从理论到工业级部署的4道生死关卡与绕过方案

第一章&#xff1a;AIAgent元学习能力的范式革命与SITS2026定义 2026奇点智能技术大会(https://ml-summit.org) 从任务特化到认知自适应的跃迁 传统AI代理依赖于预设任务结构与静态策略库&#xff0c;而AIAgent的元学习能力标志着其可自主演化学习机制——在未见过的任务分布…...

深度解析开源音效引擎:Equalizer APO 5大实战技巧与专业配置方案

深度解析开源音效引擎&#xff1a;Equalizer APO 5大实战技巧与专业配置方案 【免费下载链接】equalizerapo Equalizer APO mirror 项目地址: https://gitcode.com/gh_mirrors/eq/equalizerapo 作为一款开源的系统级音频处理引擎&#xff0c;Equalizer APO 通过创新的模…...

当AI Agent开始参与立法听证——SITS2026专家亲历的3个真实案例(含未公开会议纪要)

第一章&#xff1a;SITS2026专家&#xff1a;AIAgent的社会影响 2026奇点智能技术大会(https://ml-summit.org) AIAgent已从实验室原型演进为嵌入城市治理、医疗决策与教育服务的常态化社会基础设施。在SITS2026大会上&#xff0c;来自全球17个国家的跨学科专家指出&#xff…...

【Hadoop进阶】Hadoop生态圈实战指南:从核心组件到典型应用场景解析

1. Hadoop生态圈的核心价值与架构设计 第一次接触Hadoop的人常会被它庞大的生态体系吓到&#xff0c;但理解其设计哲学后就会发现非常直观。我在2013年第一次部署Hadoop集群时&#xff0c;最惊讶的是它用普通服务器就能搭建起PB级数据处理能力。Hadoop生态圈本质上是用分布式架…...

Agent 安全的真正战场:一文看懂大模型智能体的攻击面重构

今天很多人谈 Agent 安全&#xff0c;脑子里想到的还是老三样&#xff1a;提示注入、越狱、输出审核。但这篇论文真正想说的是&#xff0c;当大模型从“会回答”变成“会调用工具、会接外部知识、会自己规划任务”之后&#xff0c;安全问题就已经不再是单纯的内容安全问题&…...

【技术综述】世界模型演进图谱:从Dyna到Sora,理解与预测的双重变奏

1. 世界模型的起源与核心使命 1989年&#xff0c;强化学习先驱Richard Sutton在论文中首次提出Dyna架构时&#xff0c;可能没想到这个概念会成为人工智能理解世界的基石。当时他正在思考一个简单却深刻的问题&#xff1a;智能体如何像人类一样&#xff0c;通过想象来规划行动&…...

d3dx10_38.dll文件不存在 找不到 无法启动 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…...

尚硅谷大数据项目电商数仓6.0学习记录----数据仓库(中)

1. ODS层数据装载与自动化调度实战 在电商数仓项目中&#xff0c;ODS层作为数据仓库的第一站&#xff0c;承担着原始数据的"蓄水池"角色。我遇到过不少新手在数据装载环节踩坑&#xff0c;最常见的问题就是手动执行SQL导致数据不一致。这里分享一个真实案例&#xf…...

STM32高精度定时器(HRTIM1)实现倍频、定时器触发采样

STM32高精度定时器&#xff08;HRTIM1&#xff09;&#xff1a;精准定时与同步触发的强大引擎在嵌入式系统开发中&#xff0c;尤其是在数字电源、电机控制、照明及各类高精度PWM应用领域&#xff0c;定时器的精度和灵活性往往成为系统性能的关键瓶颈。STM32系列微控制器内置的高…...

C复习13(排序算法)

#技术笔记1.冒泡排序这个排序要能自己直接敲出来,由于每一轮有交换,导致数据就像冒泡泡一样,冒到数组的末尾,所以叫做冒泡排序。冒泡排序稳定&#xff0c;时间复杂度O(n^2),空间复杂度O(1) (这里就给出一种代码&#xff0c;从小到大的排序顺序冒了&#xff0c;后面都是按从小到…...

mysql5.7的rownumber写法

db2中的语句select * from ( select rownumber() over (order by a.stdcno) as num , a.id ,b.cuno from t1 a ,t2 b where a.id b.id ) as Amysql5.7中的语句select cast(row_num : row_num 1 as char) AS num , A.* from (select row_num :0) r,( select a.id, b.cuno fro…...

新概念英语第一册141_Sally s first train ride

Lesson 141: Sally’s first train ride 萨莉第一次乘火车旅行 Watch the story and answer the question Why was the mother embarrassed? Because Sally said the middle-aged lady was ugly.Key words and expressions excited 兴奋的get on 登上middle-age…...

为什么越来越多工程师选择英飞凌芯片?优势分析

作为一名在嵌入式硬件领域从业多年的工程师&#xff0c;我经常被问到这样一个问题&#xff1a;“英飞凌芯片好不好&#xff1f;值不值得在项目中优先考虑&#xff1f;”说实话&#xff0c;前几年我对这个问题还有些犹豫&#xff0c;但近几年随着项目经验的积累&#xff0c;尤其…...

昆仑通态屏幕制作(进阶篇)---动态交互设计(滑块控制与状态反馈)

1. 滑块控制的动态联动实现 在工业控制场景中&#xff0c;滑块是最直观的交互控件之一。昆仑通态屏幕的滑块控制功能&#xff0c;可以实现对设备参数的精细调节。比如控制电机转速、调节温度设定值等场景&#xff0c;都需要滑块输入与其他显示元素的动态联动。 1.1 滑块与进度…...

Blender 3MF插件终极指南:5步实现3D打印工作流优化

Blender 3MF插件终极指南&#xff1a;5步实现3D打印工作流优化 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat Blender3mfFormat插件是Blender生态系统中专为3D打印工作流…...

相机照片详细参数怎么修改?4款工具,新手零失误

拍好的照片参数不对真的很糟心&#xff01;要么光圈显示错了&#xff0c;要么ISO、焦距乱标&#xff0c;相机型号还可能被搞错。想改却找不到简单的工具&#xff0c;要么软件太复杂&#xff0c;要么改完参数不生效&#xff0c;甚至把原图画质搞坏了。其实用对工具超简单&#x…...

如何修改图片的exif信息?6款工具,新手也能秒会

一、什么是EXIF信息&#xff1f;为什么要修改&#xff1f;EXIF信息就像图片的"身份证"&#xff0c;记录着拍摄时的详细数据&#xff0c;比如相机型号、拍摄时间、GPS位置、光圈快门等参数。平时发朋友圈、传文件时&#xff0c;如果不注意这些信息&#xff0c;可能会不…...

打造你的私人游戏云:Sunshine串流服务器从零到精通

打造你的私人游戏云&#xff1a;Sunshine串流服务器从零到精通 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 还在为游戏设备限制而烦恼吗&#xff1f;想在任何地方都能畅玩你的P…...