最新要闻
- 微速讯:女生在冬季剪什么发型好看呢?
- 天天热头条丨行业首款卫星通信5G手机!中兴Axon 50 Ultra吴京代言图公布:背部外观揭晓
- 【独家】韩国4月前10天芯片出口下降近40%:1TB SSD三星降599没人买 国产崛起
- 环球热点评!中老铁路国际旅客列车明日开通:万象到昆明南二等座470元
- 全球信息:大疆8K航拍无人机明天发 悟3真机亮相:个头感受下
- 天天观察:97版三兄弟代言!《天龙八部2:飞龙战天》4月14日公测:完美世界发行
- 每日看点!女子没开会员追剧需看50多分钟广告:遇到了BUG是个例
- 环球热议:酒也分贵贱? 专家:洋酒就没文化含量 中国酒文化才叫源远流
- 世界微动态丨图赫尔:0比3输球的结果很苦涩,但今天我爱上了我的球队
- Win无敌二十多年后 微软又抓到了AI风口:印度裔CEO立大功
- 环球关注:“小号Mate 50 Pro”!华为畅享60X来了:骁龙680、又一技术行业首发
- 全球观点:这株极品牡丹居然有“带刀侍卫”!24小时守护
- 当前关注:地表能效第一!锐龙9 7950X3D深入测试:i9-13900K无言以对
- 焦点讯息:SSD散热器疯了:比显卡都要高!还有暴力风扇
- 最新快讯!2023年北京市积分落户申报时间安排一览表
- 焦点简讯:选择大城市逐梦还是小城市安稳
广告
手机
![iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?](http://tuxianggu.4898.cn/thumb/uploads/2020-07-29/db49b24a344ffac3e19f762856828ea8.jpg)
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
![警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案](http://i2.chinanews.com/simg/cmshd/2021/05/16/657ff48335db44a494ca7580d58c6477.jpg)
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
新动态:让你脑洞大开的MySQL优化技巧
由于分库分表的原因,和开发规定了不能使用 表表JOIN 语句。因此,我们要将 JOIN 语句的转化成使用 IN 来做。如现在有 表 A(a_id, c_a)c_a有普通索引,表 B(b_id, c_a) 这两个表要关联, 应该转化为以下步骤处理:
- 先查询B中的 a_id
SELECT c_a FROM B WHERE xxx;
- 使用 IN 查询 A 表
SELECT a_id, ... FROM A WHERE c_a IN(在 1 中查出来的 c_a)场景
现在表的数据量有 800万。
一般的使用语句是:
(相关资料图)
SELECT * FROM A WHERE c_a IN(955555, 955556, 955557, 955558, 955559);
上面语句会执行的很快,知道使用 explain 的都明白这样一般都是会使用索引的,并且是所有范围扫描。
MySQL不会从 1 开始 扫描 800万,而是从555555 扫描到 555559(只要扫描5行数据)。
在一般情况下是没有什么问题的。但是如果 IN 里面的数据是不连续的就有很大问题了。
创建表结构语句CREATE TABLE t( id INT unsigned NOT NULL AUTO_INCREMENT, cid INT unsigned NOT NULL DEFAULT 0, c1 VARCHAR(50) NOT NULL DEFAULT "", c2 VARCHAR(50) NOT NULL DEFAULT "", c3 VARCHAR(50) NOT NULL DEFAULT "", c4 VARCHAR(50) NOT NULL DEFAULT "", c5 VARCHAR(50) NOT NULL DEFAULT "", c6 VARCHAR(50) NOT NULL DEFAULT "", PRIMARY KEY(id), INDEX idx$cid(cid)); INSERT INTO t VALUES( NULL, FLOOR(RAND() * 1000000), REPEAT("a", 50), REPEAT("a", 50), REPEAT("a", 50), REPEAT("a", 50), REPEAT("a", 50), REPEAT("a", 50)); -- 重复执行INSERT INTO tSELECT NULL, FLOOR(RAND() * 1000000), c1, c2, c3, c4, c5, c6FROM t;下面是具体的实验过程
- 使用IN查询连续的数
SELECT *FROM tWHERE cid IN(955555, 955556, 955557, 955558, 955559);+---------+--------+-----------------------------------| id | cid | c1 +---------+--------+-----------------------------------| 319330 | 955555 | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa| 1885293 | 955555 | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa| ......| 8733757 | 955559 | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa| 8796305 | 955559 | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa+---------+--------+-----------------------------------41 rows in set (0.15 sec)
- 使用IN查询不连续的数
SELECT *FROM tWHERE cid IN(1, 5000, 50000, 500000, 955559);+---------+--------+-----------------------------------| id | cid | c1 +---------+--------+-----------------------------------| 1 | 341702 | 1 | aaaaaaaaaaaaaaaaaaaaaaaaa| 1 | 1045176 | 1 | aaaaaaaaaaaaaaaaaaaaaaaaa......| 955559 | 8733757 | 955559 | aaaaaaaaaaaaaaaaaaaaaaaaa| 955559 | 8796305 | 955559 | aaaaaaaaaaaaaaaaaaaaaaaaa+--------+---------+--------+--------------------------41 rows in set (4.34 sec)
- 使用UNION优化
SELECT *FROM ( SELECT 1 AS cid UNION ALL SELECT 5000 UNION ALL SELECT 50000 UNION ALL SELECT 500000 UNION ALL SELECT 955559) AS tmp, tWHERE tmp.cid = t.cid;+---------+--------+-----------------------------------| id | cid | c1 +---------+--------+-----------------------------------| 1 | 341702 | 1 | aaaaaaaaaaaaaaaaaaaaaaaaa| 1 | 1045176 | 1 | aaaaaaaaaaaaaaaaaaaaaaaaa......| 955559 | 8733757 | 955559 | aaaaaaaaaaaaaaaaaaaaaaaaa| 955559 | 8796305 | 955559 | aaaaaaaaaaaaaaaaaaaaaaaaa+--------+---------+--------+--------------------------41 rows in set (0.01 sec)
从上面可以看出上面使用UNION的方法生成一个临时表作为关联的主表。
拓展要是MySQL有只带的一个行转列的函数那就完美了。这样我们就可以不用使用UNION了。
SELECT 1, 5000, 50000, 500000, 955559;+---+------+-------+--------+--------+| 1 | 5000 | 50000 | 500000 | 955559 |+---+------+-------+--------+--------+| 1 | 5000 | 50000 | 500000 | 955559 |+---+------+-------+--------+--------+1 row in set (0.00 sec) 变成以下SELECT row_to_col(1, 5000, 50000, 500000, 955559);+--------+| id |+--------+| 1 || 5000 || 50000 || 500000 || 955559 |+--------+
要是能像上面就太棒了简直。
原文来自:http://www.ttlsa.com/mysql/mysql-sql-performance-let-you-head-big-open/
本文地址:https://www.linuxprobe.com/special-optimize-sql.html
关键词:
-
-
-
-
新动态:让你脑洞大开的MySQL优化技巧
多地超前谋划专项债项目 “早发快用”加力稳投资
微速讯:女生在冬季剪什么发型好看呢?
天天热头条丨行业首款卫星通信5G手机!中兴Axon 50 Ultra吴京代言图公布:背部外观揭晓
【独家】韩国4月前10天芯片出口下降近40%:1TB SSD三星降599没人买 国产崛起
环球热点评!中老铁路国际旅客列车明日开通:万象到昆明南二等座470元
全球信息:大疆8K航拍无人机明天发 悟3真机亮相:个头感受下
天天观察:97版三兄弟代言!《天龙八部2:飞龙战天》4月14日公测:完美世界发行
每日看点!女子没开会员追剧需看50多分钟广告:遇到了BUG是个例
环球热议:酒也分贵贱? 专家:洋酒就没文化含量 中国酒文化才叫源远流
世界微动态丨图赫尔:0比3输球的结果很苦涩,但今天我爱上了我的球队
环球观点:CSS杂谈——flex布局里面的auto到底多长
光栅化算法-中点画圆算法
Win无敌二十多年后 微软又抓到了AI风口:印度裔CEO立大功
环球关注:“小号Mate 50 Pro”!华为畅享60X来了:骁龙680、又一技术行业首发
全球观点:这株极品牡丹居然有“带刀侍卫”!24小时守护
当前关注:地表能效第一!锐龙9 7950X3D深入测试:i9-13900K无言以对
焦点讯息:SSD散热器疯了:比显卡都要高!还有暴力风扇
最新快讯!2023年北京市积分落户申报时间安排一览表
世界资讯:微信小程序:接手项目,修bug
焦点简讯:选择大城市逐梦还是小城市安稳
世界快消息!电动自行车电池爆炸由谁赔偿?律师:销售商也有责任
每日热闻!会“跳舞”的汽车你见过吗?比亚迪云辇系统再次引领行业
全球热议:韩国26岁女星被发现在家中去世:新剧拍摄中 死因未透露
Python中struct 模块的使用教程
焦点观察:once do, do it well
全球资讯:华为小米vivo一加重磅新机汇总!接下来10天有的看了
世界球精选!终于不缺货了!小米13 Ultra订单增加50%:不愁买不到
视讯!这才是青春_山东聊城市中考满分作文 中考满分作文:静待一场幸
SpringApplication详解
焦点讯息:OpenAI Translator | 基于ChatGPT API全局翻译润色解析及ORC上传图像翻译工具
当前报道:锁屏面试题百日百刷-kafk篇(一)
环球热议:“三轮跑车”尬舞!又被比亚迪装到了 国产车控黑科技登场
每日快播:安“踏”李宁
天天速讯:月薪2万女高管不服从工作安排被炒获赔98万:网友力挺
出水芙蓉?真人版《小美人鱼》电影照更新:黑小美人鱼特写来了
Turtlebot3仿真代码学习笔记
世界热点!.NET 个人博客系统
五金店卖什么卖得最好_五金店卖什么
天天新消息丨腾讯国漫手游《狐妖小红娘》宣布停运 6月16日关闭服务器
电动版帕萨特这模样?大众ID.7申报图亮相
视焦点讯!3599元起 铭凡推出NPB7迷你主机:i7-13700H、双雷电4
天天速读:丰田醒了 可睁开眼发现:世界已经变了!
南方的网友注意了 沙尘已跨过长江!北京影响已到末期
day07-OpenFeign-服务调用
看热讯:stm32 使用多串口通信调试总结
速讯:记录-css实现交融文字效果
环球最新:阿里云 - 连接不同VPC方案
天天时讯:紫薯泥怎么做好吃-紫薯泥
【天天新视野】本周发布!徕卡M11 Monochrom详细规格曝光
旗舰功能全下放!华为nova 11 Ultra曝光:卫星通信、可变光圈都支持
焦点速看:米粉催雷军发小米13 Ultra:你敢发我就敢买
电脑里破解软件又少一款!Win11原生录屏免费平替了:新增快捷键
绝对忠诚?超八成iPhone用户丢机后秒换新款iPhone
全球快讯:从spring boot泄露到接管云服务器平台
ThreadPoolExecutor源码学习
图文介绍 Windows 系统下打包上传 IOS APP 流程
【Visual Leak Detector】使用注意事项
一个TCP 连接可以发送多少个HTTP请求?
为什么打不开空间_腾讯官方的解决方法
《终结者》T-1000成真!科学家研制出可固液转变机器人 形态科幻
当前观点:或命名为“高山” 魏牌全新插混MPV申报:红旗HQ9有话要说
印度版大G来啦!4排10座轴距超3米 马力只有90匹
坚持元宇宙不动摇:Meta百万美元年薪招聘VR程序员
环球观热点:女子下班回工作消息获赔加班费引热议!调查称仅1成多人拒绝下班秒回工作
全球即时:卢拉发推预告:“我将启程前往中国”,期望加强巴中贸易伙伴关系
世界简讯:【一行代码秒上云】Serverless六步构建全栈网站
科创人·中建三局一公司尹奎:数字化变革能创造全新行业,其意义超越形式、范式创新
当前关注:CAD二次开发,安装程序中写注册表
滚动:低代码开发,是稳扎稳打还是饮鸩止渴?
快报:【金融街发布】人民银行:3月货币供应量M2同比增长12.7% 比上月回落0.2个百分点
能打比亚迪宋PLUS DM-i 哈弗枭龙MAX开订:用上Hi4电四驱
焦点关注:两大巨头“世纪大和解”!腾讯视频官方入驻抖音:昵称“鹅家”
天天日报丨13代标压高能轻薄本!华硕无畏15i 2023到手5699元:OLED好屏值得拥有
又来一份10年协议!微软与英国EE达成云游戏合作
焦点播报:《圣斗士星矢》真人版战斗预告:变身画面超燃!
温彬等:食品、能源价格双双下探,促内需政策仍须发力
精彩看点:【业务自动化平台】上海道宁与UiPath致力于让每个企业、每个人都能充分利用自动化带来的成就和优势
微服务保护--Sentinel
ASP.NET Post, FromBody 接参总是null 空值. Web api 前端传递是有值的,怎么回事?
【新华500】新华500指数(989001)11日微跌0.07%
快消息!7000mAh超大电池比肩充电宝!华为畅享60X官宣:实用体验才是王道
世界快资讯:女子看电视惊现3000多秒超长广告 直呼太离谱
环球今亮点!国内最新快递服务满意度出炉:顺丰、京东、邮政排前三 你经常用哪家?
简讯:大家不看电视了?海信:电视开机率低是个伪命题
环球快讯:别YY失控!深圳一辆特斯拉钣喷中心破窗而出 差点掉下来:官方回应
热议:希腊神话的英语典故
重试,让程序更健壮
aix系统如何查看网卡配置
模型训练与推理中为什么需要使用GPU?基本概念梳理
全球球精选!2023年最新iOS打包发布流程汇总
韩总统府称网传美监听韩政府文件部分系伪造
多地现沙尘暴!中央气象台首席预报员:沙尘天气无需根治
英特尔锐炫A750最新驱动游戏实测:进步巨大
刷新认知!男子站临海近乎垂直石壁上钓鱼:网友直呼请勿模仿
环球新动态:世界首个“九尾狐甲鱼”化石被发现:长相奇特怪异
全球第一批25个GPT模型开始自由生活
当前资讯!应用火山引擎 DataTester“避坑”,抖音实现用 A/B 实验快速试错
路由跳转及传参
每日消息!堆叠面积图的优点和缺点有哪些?