5)mysql sql的使用技巧及优化(1)

MySQL与SQL优化 MySQL 数据库 -SQL 优化1.结构图2. MySQL 数据库引擎简介2.1 ISAM (Indexed Sequential Access Method)2.2 MyISAM2.3 InnoDB2.3.1 innodb 与 myisam 区别2.3.2 如何选择2.4 Memory 存储引擎2.5 NDBCluster2.6 Merge存储引擎2.7 FEDERATED2.8 AR... 阅读详情

一、连接和子查询的使用

正确使用sql的重要性

这里写图片描述

准备数据(其中,tdb_goods的cate_id是逻辑外键):
这里写图片描述

表:tdb_goods

这里写图片描述

表:tdb_goods_cates

这里写图片描述

DROP TABLE IF EXISTS `tdb_goods_cates`;
CREATE TABLE `tdb_goods_cates` (
  `cate_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
  `cate_name` varchar(40) DEFAULT NULL,
  PRIMARY KEY (`cate_id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of tdb_goods_cates
-- ----------------------------
INSERT INTO `tdb_goods_cates` VALUES ('1', '台式机');
INSERT INTO `tdb_goods_cates` VALUES ('2', '平板电脑');
INSERT INTO `tdb_goods_cates` VALUES ('3', '服务器/工作站');
INSERT INTO `tdb_goods_cates` VALUES ('4', '游戏本');
INSERT INTO `tdb_goods_cates` VALUES ('5', '笔记本');
INSERT INTO `tdb_goods_cates` VALUES ('6', '笔记本配件');
INSERT INTO `tdb_goods_cates` VALUES ('7', '超级本');
INSERT INTO `tdb_goods_cates` VALUES ('8', '路由器');
INSERT INTO `tdb_goods_cates` VALUES ('9', '交换机');
INSERT INTO `tdb_goods_cates` VALUES ('10', '网卡');


DROP TABLE IF EXISTS `tdb_goods`;
CREATE TABLE `tdb_goods` (
  `goods_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
  `goods_name` varchar(150) NOT NULL,
  `cate_id` smallint(5) unsigned NOT NULL,
  `brand_id` smallint(5) unsigned NOT NULL,
  `goods_price` decimal(15,3) unsigned NOT NULL DEFAULT '0.000',
  `is_show` tinyint(1) NOT NULL DEFAULT '1',
  `is_saleoff` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`goods_id`)
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of tdb_goods
-- ----------------------------
INSERT INTO `tdb_goods` VALUES ('1', 'R510VC 15.6英寸笔记本', '5', '2', '3399.000', '1', '0');
INSERT INTO `tdb_goods` VALUES ('2', 'Y400N 14.0英寸笔记本电脑', '5', '7', '4899.000', '1', '0');
INSERT INTO `tdb_goods` VALUES ('3', 'G150TH 15.6英寸游戏本', '4', '9', '8499.000', '1', '0');
INSERT INTO `tdb_goods` VALUES ('4', 'X550CC 15.6英寸笔记本', '5', '2', '2799.000', '1', '0');
INSERT INTO `tdb_goods` VALUES ('5', 'X240(20ALA0EYCD) 12.5英寸超极本', '7', '7', '4999.000', '1', '0');
INSERT INTO `tdb_goods` VALUES ('6', 'U330P 13.3英寸超极本', '7', '7', '4299.000', '1', '0');
INSERT INTO `tdb_goods` VALUES ('7', 'SVP13226SCB 13.3英寸触控超极本', '7', '6', '7999.000', '1', '0');
INSERT INTO `tdb_goods` VALUES ('8', 'iPad mini MD531CH/A 7.9英寸平板电脑', '2', '8', '1998.000', '1', '0');
INSERT INTO `tdb_goods` VALUES ('9', 'iPad Air MD788CH/A 9.7英寸平板电脑 (16G WiFi版)', '2', '8', '3388.000', '1', '0');
INSERT INTO `tdb_goods` VALUES ('10', ' iPad mini ME279CH/A 配备 Retina 显示屏 7.9英寸平板电脑 (16G WiFi版)', '2', '8', '2788.000', '1', '0');
INSERT INTO `tdb_goods` VALUES ('11', 'IdeaCentre C340 20英寸一体电脑 ', '1', '7', '3499.000', '1', '0');
INSERT INTO `tdb_goods` VALUES ('12', 'Vostro 3800-R1206 台式电脑', '1', '5', '2899.000', '1', '0');
INSERT INTO `tdb_goods` VALUES ('13', 'iMac ME086CH/A 21.5英寸一体电脑', '1', '8', '9188.000', '1', '0');
INSERT INTO `tdb_goods` VALUES ('14', 'AT7-7414LP 台式电脑 (i5-3450四核 4G 500G 2G独显 DVD 键鼠 Linux )', '1', '3', '3699.000', '1', '0');
INSERT INTO `tdb_goods` VALUES ('15', 'Z220SFF F4F06PA工作站', '3', '4', '4288.000', '1', '0');
INSERT INTO `tdb_goods` VALUES ('16', 'PowerEdge T110 II服务器', '3', '5', '5388.000', '1', '0');
INSERT INTO `tdb_goods` VALUES ('17', 'Mac Pro MD878CH/A 专业级台式电脑', '3', '8', '28888.000', '1', '0');
INSERT INTO `tdb_goods` VALUES ('18', ' HMZ-T3W 头戴显示设备', '6', '6', '6999.000', '1', '0');
INSERT INTO `tdb_goods` VALUES ('19', '商务双肩背包', '6', '6', '99.000', '1', '0');
INSERT INTO `tdb_goods` VALUES ('20', 'X3250 M4机架式服务器 2583i14', '3', '1', '6888.000', '1', '0');
INSERT INTO `tdb_goods` VALUES ('23', ' LaserJet Pro P1606dn 黑白激光打印机', '12', '4', '1849.000', '1', '0');

1.1 inner join (内连接)

这里写图片描述

查询出公共部分

-- 内连接
select a.goods_name,a.goods_price,a.is_show,b.cate_name from tdb_goods a 
inner join tdb_goods_cates b on a.cate_id = b.cate_id;

1.2 Left Outer Join (左外连接)

这里写图片描述

这里分为两个部分,包含公共部分跟不包含公共部分

  • 1.包含公共部分,直接将上面inner 该查 left即可,观察结构即可发现多出了一条记录的cate_name为null,因为这条记录的cate_id为12,而tdb_goods_cates 表中找不到
    这里写图片描述
-- 左连接
select a.goods_name,a.goods_price,a.is_show,b.cate_name from tdb_goods a 
left join tdb_goods_cates b on a.cate_id = b.cate_id ;
  • 2.不包含公共部分,即只是查出这条cate_name为null的记录,sql改造如下
-- 左连接(不包含公共部分)
select a.goods_name,a.goods_price,a.is_show,b.cate_name from tdb_goods a 
left join tdb_goods_cates b on a.cate_id = b.cate_id 
where b.cate_id is null;

1.3 右连接

这里他跟左连接相反,就不多加说明,直接给出例子,观察结果即可。

-- 右连接
select a.goods_name,a.goods_price,a.is_show,b.cate_name from tdb_goods a 
right join tdb_goods_cates b on a.cate_id = b.cate_id ;

-- 右连接(不包含公共部分)
select a.goods_name,a.goods_price,a.is_show,b.cate_name from tdb_goods a 
right join tdb_goods_cates b on a.cate_id = b.cate_id 
where a.cate_id is null;

1.4 full join (mysql不支持,使用UNION ALL代替)

这里写图片描述

-- 包含了大量公共的重复数据
select * from (
select a.goods_name,a.goods_price,a.is_show,b.cate_name from tdb_goods a 
left join tdb_goods_cates b on a.cate_id = b.cate_id 
UNION ALL
select a.goods_name,a.goods_price,a.is_show,b.cate_name from tdb_goods a 
right join tdb_goods_cates b on a.cate_id = b.cate_id ) c;

1.5 update join set(多表更新)的使用

在 http://blog.youkuaiyun.com/hp5321/article/details/53786796 中有讲解。 8.4中

1.6 使用join避免子查询,提高效率

例子: 查询出每类商品中,最贵的。

子查询的实现:

-- 先根据id查询每类商品最贵的一个
select MAX(a.goods_price),a.goods_name,a.cate_id from tdb_goods a where a.cate_id = 1;
select MAX(a.goods_price),a.goods_name,a.cate_id from tdb_goods a where a.cate_id = 2;
select MAX(a.goods_price),a.goods_name,a.cate_id from tdb_goods a where a.cate_id = 3;
select MAX(a.goods_price),a.goods_name,a.cate_id from tdb_goods a where a.cate_id = 4;
select MAX(a.goods_price),a.goods_name,a.cate_id from tdb_goods a where a.cate_id = 5;

-- 最终sql
select a.goods_name,a.goods_price,b.cate_name from tdb_goods a 
INNER JOIN tdb_goods_cates b ON a.cate_id = b.cate_id
where a.goods_price = (
select MAX(c.goods_price) from tdb_goods c where c.cate_id = b.cate_id
) 
ORDER BY a.goods_price;

使用join的实现:

-- 使用join 避免子查询
select a.goods_name,a.goods_price,b.cate_name from tdb_goods a 
INNER JOIN tdb_goods_cates b ON a.cate_id = b.cate_id
-- 在查询出数据的基础上,关联多一次tdb_goods表,获取 max(c.goods_price) 条件
INNER JOIN tdb_goods c ON c.cate_id = b.cate_id
GROUP BY a.goods_name,a.goods_price,b.cate_name HAVING a.goods_price = max(c.goods_price)
ORDER BY a.goods_price;

1.7 特殊情况,使用子查询,可简化开发

例子:查询出每类商品价格最贵的前两个。

-- 查询出每类商品价格最贵的前两个。
select a.goods_name,a.goods_price,b.cate_name from tdb_goods a 
INNER JOIN tdb_goods_cates b ON a.cate_id = b.cate_id
where b.cate_name = '游戏本' 
ORDER BY a.goods_price DESC
LIMIT 2;
-- 可以使用以上的语句,根据类型遍历出所有

使用子查询,可方便查出所有类型的前2名

这个sql的思路就是:给tdb_goods表中,查的的时候计算出一列排位列,外部根据排位列,即可很方便的查询出所有类别的前二名

select c.goods_name,c.goods_price,d.cate_name from 
(
select a.goods_name,a.goods_price,a.cate_id
-- 根据 分类cate_id, 增加一个排位字段cnt,后面直接根据这个排位字段cnt<=2,即可查出前2名
,(select count(*) from tdb_goods b where a.cate_id=b.cate_id and a.goods_price<=b.goods_price) cnt
 from tdb_goods a  
GROUP BY a.goods_name,a.goods_price,a.cate_id
) c 
INNER JOIN tdb_goods_cates d ON c.cate_id = d.cate_id
WHERE c.cnt <=2
ORDER BY d.cate_name,c.goods_price desc

二、sql处理行列转换

2.1 行转列:场景

统计每个月的销售金额
这里写图片描述

学生成绩的成绩表
这里写图片描述

2.1 行转列:数据准备

以学生表为例

这里写图片描述

倒入数据表

DROP TABLE IF EXISTS `t_student`;
CREATE TABLE `t_student` (
  `stu_id` int(11) NOT NULL AUTO_INCREMENT,
  `stu_name` varchar(20) DEFAULT NULL COMMENT '姓名',
  `stu_subject` varchar(20) DEFAULT NULL COMMENT '学科',
  `stu_score` int(11) DEFAULT NULL COMMENT '成绩',
  PRIMARY KEY (`stu_id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of t_student
-- ----------------------------
INSERT INTO `t_student` VALUES ('1', '张三', '数学', '78');
INSERT INTO `t_student` VALUES ('2', '张三', '语文', '85');
INSERT INTO `t_student` VALUES ('3', '张三', '英语', '90');
INSERT INTO `t_student` VALUES ('4', '李四', '数学', '90');
INSERT INTO `t_student` VALUES ('5', '李四', '语文', '75');
INSERT INTO `t_student` VALUES ('6', '李四', '英语', '80');

2.3 行转列 :例子

查看学生成绩表

select 
stu_name,
SUM(case when stu_subject='数学' then stu_score end) as "数学",
SUM(case when stu_subject='语文' then stu_score end) as "语文",
SUM(case when stu_subject='英语' then stu_score end) as "英语"
from t_student
GROUP BY stu_name;

2.4 列转行: 场景

有一个权限表,记录了用户跟权限的关系,而权限是以逗号的方式隔开,此时需要转成右边以行的形式

这里写图片描述

2.5 列转行 :数据准备

做这个转换的sql,需要一张序列表来协助完成

两张如下:

这里写图片描述

sql导入:

DROP TABLE IF EXISTS `t_operator`;
CREATE TABLE `t_operator` (
  `operator_id` int(11) NOT NULL AUTO_INCREMENT,
  `op_userid` int(11) DEFAULT NULL COMMENT '用户id',
  `permission` varchar(255) DEFAULT NULL COMMENT '权限',
  PRIMARY KEY (`operator_id`)
) ENGINE=InnoDB AUTO_INCREMENT=73 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of t_operator
-- ----------------------------
INSERT INTO `t_operator` VALUES ('1', '10001', '10070501,13011104,1231532,12412,123123');
INSERT INTO `t_operator` VALUES ('71', '10002', '1007012301,130111104,1231531232,1241122');
INSERT INTO `t_operator` VALUES ('72', '10003', '1234123,131231123');

DROP TABLE IF EXISTS `t_seq`;
CREATE TABLE `t_seq` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of t_seq
-- ----------------------------
INSERT INTO `t_seq` VALUES ('1');
INSERT INTO `t_seq` VALUES ('2');
INSERT INTO `t_seq` VALUES ('3');
INSERT INTO `t_seq` VALUES ('4');
INSERT INTO `t_seq` VALUES ('5');
INSERT INTO `t_seq` VALUES ('6');
INSERT INTO `t_seq` VALUES ('7');
INSERT INTO `t_seq` VALUES ('8');
INSERT INTO `t_seq` VALUES ('9');

2.6 列转行 :例子

先看完整例子,再解释例子

此例子为固定句式:

select 
    b.op_userid,
-- 这个替换规则是固定的,复制过来用即可
    REPLACE(
        SUBSTRING(
            SUBSTRING_INDEX(b.permission,',',a.id),
            CHAR_LENGTH(
                SUBSTRING_INDEX(b.permission,',',a.id-1)
            )+1
        ),',',''
    ) as permission
from t_seq a
CROSS JOIN
(
select op_userid ,CONCAT(permission,',') as permission ,
LENGTH(permission)-LENGTH(REPLACE(permission,',',''))+1 as size
from t_operator) b
ON a.id <= b.size;

执行效果:

这里写图片描述

例子解释:
例子中,我们先看 cross join 里面的内容,这里是在permission中拼接多一个逗号,主要是看后一个,在LENGTH(permission)-LENGTH(REPLACE(permission,’,’,”))+1 as size中,LENGTH(permission)为获取这个字段的长度,
LENGTH(REPLACE(permission,’,’,”) 这个则是将逗号替换成空字符串之后的长度,两个想减然后加一,即得到了permission中的个数

select op_userid ,CONCAT(permission,',') as permission ,
LENGTH(permission)-LENGTH(REPLACE(permission,',',''))+1 as size
from t_operator;

这条语句的执行结果
这里写图片描述

接着,利用cross join 将语句变成多行

select * 
from t_seq a
CROSS JOIN( 
select op_userid ,CONCAT(permission,',') as permission ,
LENGTH(permission)-LENGTH(REPLACE(permission,',',''))+1 as size
from t_operator
)b
-- 这个条件是根据 size的多少,计算需要多少行 :如 10001这一行的,需要变成5行
ON a.id <= b.size;

这里写图片描述

最后,根据这个结构,进行permission的没一行进行切割字符串即可
切割规则为
固定写法:

    REPLACE(
        SUBSTRING(
            SUBSTRING_INDEX(b.permission,',',a.id),
            CHAR_LENGTH(
                SUBSTRING_INDEX(b.permission,',',a.id-1)
            )+1
        ),',',''
    ) as permission

个人学习笔记(慕课网)

MySQL 5.1中文帮助文档:全面掌握关系型数据库管理 SQL,结构化查询语言(Structured Query Language),是用于管理和操作关系型数据库的标准编程语言。SQL由IBM在1970年代开发,随后成为数据库查询和数据操作的事实标准。本章将带您快速了解SQL的核心概念、基础语法以及在数据库操作中的应用。事务是数据库管理系统执行过程中的一个逻辑单位,由一个或多个操作序列组成,这些操作作为一个整体一起向系统提交,要么全部执行,要么全部不执行。 阅读详情

相关推荐

MySQL Connector/J 5.1.36 - Java数据库连接桥梁

JDBC (Java Database Connectivity) 驱动程序自从第一个版本出现以来,经历了多个演进阶段,每一阶段都在功能、性能和用户体验上进行了优化。最开始的JDBC驱动程序是为了提供一个标准的Java接口,以便于Java应用能够连接和操作SQL数据库。随着时间的推移,JDBC驱动程序发展到了多个版本,包括Type 1、Type 2、Type 3和Type 4。Type 1驱动是JDBC-ODBC桥驱动,已经被废弃。Type 2。

weixin_30765637的博客 956

MYSQL编写SQL技巧记录

MYSQL常用的SQL技巧记录 SQL执行顺序 编写顺序: SELECT DISTINCT <select list> FROM <left_table> <join_type> JOIN <right_table> ON <join_condition> WHERE <where_condition> GROUP B...

sunny-blog 361

MySQL 5.1 中英文帮助文档详解及实践

本文还有配套的精品资源,点击获取 简介:MySQL 5.1是一个功能丰富的数据库管理系统,适用于各种规模的应用。该压缩包包含中文和英文版本的帮助文档,为用户提供了详尽的参考资料。文档内容涉及安装升级、SQL语法、数据库管理、存储引擎、性能优化、安全性、复制与集群、备份与恢复等方面,旨在帮助用户快速理解和应用MySQL 5.1。同时,英文帮助文档为英语熟练用户提供更原始的技术...

weixin_29997223的博客 1313

mysql截取字符串最后两位_Mysql字符串截取函数SUBSTRING的用法说明

感觉上MySQL的字符串函数截取字符,比用程序截取(如PHP或JAVA)来得强大,所以在这里做一个记录,希望对大家有用。函数:1、从左开始截取字符串left(str, length)说明:left(被截取字段,截取长度)例:select left(content,200) as abstract from my_content_t2、从右开始截取字符串right(str, length)说明:ri...

weixin_39752941的博客 5095

国产HDMI2.0芯片GSV2011怎么选?手把手教你用它设计音视频采集卡(附FPGA/海思对接指南)

本文详细解析国产HDMI2.0芯片GSV2011在音视频采集卡设计中的应用,涵盖芯片选型、硬件设计要点及与FPGA/海思平台的对接指南。GSV2011凭借4K@60Hz支持、音频提取嵌入功能和高集成度,成为音视频设备的核心选择,助力开发者快速实现高性能采集卡设计。

weixin_30181209的博客 332

Tesla V100 Windows 部署实战:从驱动安装到模式切换的避坑指南

本文是一份详细的Tesla V100在Windows系统下的部署实战指南。文章从硬件组装、系统选择讲起,重点阐述了驱动安装的正确方法,并深入剖析了将计算卡从TCC模式切换至WDDM模式的诱惑与潜在陷阱。最终,作者推荐保持默认TCC模式,并提供了使用nvidia-smi命令行等稳定可靠的显卡监控方案,旨在帮助用户避开常见坑点,高效利用这张专业计算卡进行AI计算等任务。

java5的博客 1710

优化MySQL的21个建议

今天一个朋友向我咨询怎么去优化 MySQL,我按着思维整理了一下,大概粗的可以分为21个方向。 还有一些细节东西(table cache, 表设计,索引设计,程序端缓存之类的)先不列了,对一个系统,初期能把下面做完也是一个不错的系统。1. 要确保有足够的内存数据库能够高效的运行,最关建的因素需要内存足更大了,能缓存住数据,更新也可以在内存先完成。但不同的业务对内存需要强度不一样,一推荐内存要占到数...

weixin_34248849的博客 196

STM32超声波避障小车硬件设计与实时测距实现

超声波测距是嵌入式系统中经典的环境感知技术,其原理基于声波在空气中的传播时间与距离的线性关系,通过精确计时实现非接触式距离测量。该技术具备成本低、抗光干扰强、算法简洁等优势,广泛应用于智能小车、机器人避障、液位监测等场景。工程落地的关键在于硬件信号完整性(如5V/3.3V电平匹配)、微秒级定时精度(依赖高稳定外部晶振与输入捕获模式)以及强干扰环境下的数据鲁棒性(需软硬协同滤波)。本文以STM32F103C8T6为平台,深入解析HC-SR04模块的时序闭环控制、TIM3输入捕获双沿测量、L298N电机状态机驱

weixin_42578963的博客 295

这一篇就够啦,带你了解MySQL的常用技巧

1. SQL执行顺序 编写顺序 SELECT DISTINCT <select list> FROM <left_table> <join_type> JOIN <right_table> ON <join_condition> WHERE <where_condition> GROUP BY <group_by_list> HAVING <having_condition> ORDER BY &l

qq_42292373的博客 906

利用GBD数据库做未来疾病负担预测

最近看到一篇文献,利用GBD数据库中的数据对疾病负担的发展趋势进行预测。觉得很有趣,就抽空用R语言复盘了一下里面关键的方法。 参考文献: Changing trends in the disease burden of esophageal cancer in China from 1990 to 2017 and its predicted level in 25 years DOI: 10.1002/cam4.3775 1. 相关R包的安装 主要用到的R包有3个,一个一个讲: 1.1 Nordpred

NickyCat的博客 5万+

【吐血整理-历时两个月,长达万字】FDTD Solutions学习笔记

原教学视频来自于Ansys-Lumerical官方的FDTD100,所看视频来自B站大佬UP主 【Nestor_呐等】 的幸苦翻译,本文内容粘贴自我个人在学习FDTD100时,通过字幕和一些个人理解总结的一份word。整理不易,强烈建议收藏!...

weixin_45719141的博客 10万+

Yi-Coder-1.5B与MySQL协同工作:智能SQL生成与优化

本文介绍了如何在星图GPU平台上自动化部署【ollama】Yi-Coder-1.5B镜像,实现自然语言到高质量SQL的智能生成与优化。该镜像专为代码场景设计,可快速将电商分析需求(如用户复购率统计、多表关联查询)转化为可执行MySQL语句,显著提升数据库开发效率。

weixin_36235398的博客 85

Oracle21C Windows安装全攻略:从下载到配置环境变量,避开ORA-12514的坑

本文详细介绍了Oracle21C在Windows系统上的安装全流程,包括环境准备、安装包验证、分步安装指南、数据库实例创建与配置、环境变量精准配置等关键步骤,特别针对常见的ORA-12514错误提供了解决方案,帮助用户顺利完成安装并避免常见问题。

ooo22的博客 415

MS SQL Server2000转换成MySQL

  按计划今天着手进行将后台数据库从MS SQL Server2000转换成MySQL5.1.3。目的是便于发布软件的测试版本。   1. 驱动:mysql-connector-odbc-5.1.11-win32.msi。测试Win7*64, XP通过, Win7*32、Win8的暂时没环境测试,待测。   2. MySQL_5.1.3免安装版。   3. MSS2SQL工具软件转换SQL...

weixin_30472035的博客 180

二极管钳位电路、限幅电路和检波电路Multisim电路仿真

本文系统介绍了二极管钳位、限幅和检波三种基础电路的工作原理及Multisim仿真验证。钳位电路通过电容-二极管配合实现波形整体平移,将波峰或波谷固定在指定电压;限幅电路利用二极管导通特性削除信号超出设定阈值的部分;检波电路则通过半波整流和电容滤波从调幅波中提取音频信号。三种电路均通过Multisim仿真验证了理论分析结果,展示了二极管在信号处理中的关键作用。这些基础电路广泛应用于信号调理、电平保护和通信解调等领域。

XU157303764的博客 1121

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Yi-Coder-1.5B数据库优化实战:MySQL性能调优指南

本文介绍了如何在星图GPU平台上自动化部署【ollama】Yi-Coder-1.5B镜像,实现MySQL数据库性能智能优化。该AI模型能够快速分析SQL查询瓶颈,提供索引优化建议并重写高效查询语句,特别适用于电商等高并发场景的数据库性能调优,显著提升查询响应速度。

weixin_34718952的博客 317

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

MySQL优化技巧

MySQL优化三大方向① 优化MySQL所在服务器内核(此优化一般由运维人员完成)。② 对MySQL配置参数进行优化(my.cnf)此优化需要进行压力测试来进行参数调整。③ 对SQL语句以及表优化。MySQL参数优化1:MySQL 默认的最大连接数为 100,可以在 mysql 客户端使用以下命令查看mysql> show variables like 'max_connections';2:查看

8万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

MySQL SQL优化技巧与原理

随着业务数据量的不断增加,MySQL查询语句的执行效率对程序的运行效率影响逐渐增大。因此,进行SQL优化变得至关重要。本文将结合SQL的执行语句顺序和各种SQL场景,介绍一些常见的MySQL SQL优化技巧及其背后的原理。MySQL的SQL优化是一个复杂而系统的过程,需要综合考虑多个方面。

qq_30009397的博客 1416

Mysql sql技巧与优化

结合上图执行计划分析,C表是外部驱动表,索引方式为idx_pk,Type是Range,Extra有Using index condition、Using where以及Using MRR,表示进行全表扫描,通过索引初步过滤,回表B再过滤其他条件。在这个例子中,如果customers.customer_id是一个唯一键或主键,并且在orders.customer_id上有索引,那么可能会使用eq_ref访问方法。用法:当一个表有一个唯一索引,并且该索引中的所有字段都被用于连接条件时,会使用eq_ref。

FLGB 1255

MySQL慢查询克星,15个SQL优化技巧让查询起飞

掌握MySQL查询优化的精髓,让你的数据库查询飞起来!

ly853602的博客 1774

sql优化常用的几种方法,19种最有效的sql优化技巧

sql优化常用的几种方法,19种最有效的sql优化技巧 本文我们来谈谈项目中常用的MySQL优化方法,共19条,具体如下: 1、EXPLAIN 做MySQL优化,我们要善用EXPLAIN查看SQL执行计划。 下面来个简单的示例,标注(1、2、3、4、5)我们要重点关注的数据: type列,连接类型。一个好的SQL语句至少要达到range级别。杜绝出现all级别。 key列,使用到的索引名。如果没有选择索引,值是NULL。可以采取强制索引方式。 key_len列,索引长度。 rows.

qq_42046421的博客 9159

MySQL SQL优化过程

本文旨在深入探讨MySQL SQL优化的过程,从基础概念到高级技巧,通过多个代码示例,帮助初学者和有经验的开发者掌握SQL优化的核心策略。通过上述步骤和技巧,你可以逐步提升自己的SQL技能,使你的应用在面对日益增长的数据量时仍然保持高性能。希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身农奴把歌唱,数据库的性能会随数据量增长而变化,定期执行查询分析和优化是必要的。

一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身"农奴"把歌唱,一边打入敌人内部一边持续提升自己,为我们广大开发同胞谋福祉,坚决抵制睿智产品折磨我们码农兄弟! 946

MySQL——SQL优化

SQL优化是提升数据库性能的关键。本文总结了17个SQL优化技巧,包括避免SELECT*、使用UNION ALL代替UNION、小表驱动大表、批量操作、合理使用LIMIT等查询优化方法。同时介绍了索引优化原则、数据库结构优化策略,以及如何通过执行计划分析、分页优化、配置调整等提高性能。文章还强调了避免大事务、使用存储过程等建议,并指出SQL优化需要结合具体业务场景持续进行。通过遵循这些优化策略,可以显著提升查询效率和数据库整体性能。

hj945218的博客 1054

【MySQL】常见SQL优化小技巧

这篇文章大多数的内容是参考了b站up主【苏三说技术】的关于sql优化的讲解视频,大家有兴趣的可以去观看。博主这里做个记录,方便后期的学习与回顾。

qq_51933234的博客 1058

MySQL-SQL优化

MySQL性能调优的相关知识,包括SQL性能分析和SQL优化等。

m0_53222084的博客 3833
上一篇: 4)mysql自定义函数和存储过程
hp柠檬茶
博客等级 码龄11年 2粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值