SQL语句的执行处理

一、SQL语句的执行处理模式

  SQL语句的执行处理模式分为两种:即时SQL(Immediate Statements)和预处理SQL(Prepared Statements)

二、即时SQL

 1、定义

  动态的根据传入的参数拼接SQL语句并执行,一条语句经过MYSQL Server层分析器、优化器、执行器组件,分别进行词法、语义分析、优化SQL语句、选择索引、制定执行计划、执行并返回结果。

  其中,对SQL语句进行词法语义分析、优化SQL语句、选择索引、制定执行计划等一系列操作,称为“对SQL语句的编译”。

  如上,1条SQL语句按照此流程处理,一次编译,单次运行,此类普通语句被称作“即时SQL”。

三、预处理SQL

 1、定义

  很多情况,我们的一条sql语句可能会反复执行,或者每次执行的时候只有个别的值不同(比如query的where子句值不同,update的set子句值不同,insert的values值不同)。
如果每次都需要经过上面的词法语义解析、语句优化、制定执行计划等,则效率就明显不行了。

  所谓预编译语句就是将这类语句中的值用占位符替代,可以视为将sql语句模板化或者说参数化,一般称这类语句叫Prepared Statements或者Parameterized Statements

2、优势

 1)性能提高  

  预编译语句的优势在于归纳为:一次编译、多次运行,省去了解析优化等过程;此外预编译语句能防止sql注入。
  当然就优化来说,很多时候最优的执行计划不是光靠知道sql语句的模板就能决定了,往往就是需要通过具体值来预估出成本代价。

 2)防止SQL注入

  下面是一个登户登录的校验,当你输入用户名和密码,点击登录,信息传到服务器,服务器端会从User表中查询有无该用户,以下是两种SQL语句的差别。

-- 用户登录校验
select username, password from user where username='张三' and password='123'
 
-- 普通语句
select username, password from user where username='saggd' and password='' or '1'='1';
 
-- 预编译SQL安全
select username, password from user where username=? ans password=?;

3、语法

# 定义预处理语句
PREPARE stmt_name FROM preparable_stmt;
# 执行预处理语句
EXECUTE stmt_name [USING @var_name [, @var_name] ...];
# 删除(释放)定义
{DEALLOCATE | DROP} PREPARE stmt_name;

4、预处理SQL使用注意点

 1)stmt_name 作为 preparable_stmt 的接收者,唯一标识,不区分大小写。
 2)preparable_stmt 语句中的 ? 是个占位符,所代表的是一个字符串,不需要将 ? 用引号包含起来。
 3)定义一个已存在的 stmt_name ,原有的将被立即释放,类似于变量的重新赋值。
 4)PREPARE stmt_name 的作用域是session级

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux 第二十三章

🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C,linux 🔥座右铭:“不要等到什么都没有了…

AR人脸道具SDK解决方案,实现道具与人脸的自然融合

AR人脸道具SDK解决方案,实现道具与人脸的自然融合美摄科技以其卓越的技术实力和创新能力,为企业带来了全新的AR人脸道具SDK解决方案。这一解决方案将为企业打开全新的市场机会,为用户带来前所未有的互动体验。 颠覆传统,开启AR人…

如何使用cPanel的Transfers功能迁移cPanel账户

近期由于我们的原虚拟主机提供商不再支持低版本的PHP,我们准备将所有的cPanel账户都迁移到在Hostease购买的独立服务器中,新购买的独立服务器配置了cPanel,下面我就介绍如何使用cPanel的Transfers功能,将旧服务器的cPanel账户迁移…

5月的现货黄金价格还会涨吗

近期美国经济陷入滞胀的预期升温,市场对美联储年内降息的预期有所走低,然而目前美国10年期国债的实际收益率已处于2%左右的历史高位,降息空间最终还是打开,带来实际利率的趋势下行——在去全球化的背景下,美元信用持续…

Tuxera NTFS for Mac Mac用户无缝地读写NTFS格式的硬盘和U盘

在数字化时代,数据交换和共享变得日益重要。然而,对于Mac用户来说,与Windows系统之间的文件交换可能会遇到一些挑战。这是因为Mac OS默认不支持Windows常用的NTFS文件系统。幸运的是,Tuxera NTFS for Mac为我们提供了一个优雅的解…

JAVA代码审计2个小tips

1、lib文件过多时,快速定位lib代码文件 如已知java-callgraph找出的类名 但不知道在哪个lib文件时可利用该工具快速获取到相关lib,适用于大量不知道lib文件的情况。 SearchClassInJar.jar 2、快速定位api路由思路 静态: springmvc框架 …

内容安全(AV)

防病毒网关(AV)简介 基于网络侧 识别 病毒文件,工作范围2~7层。这里的网关指的是内网和外网之间的一个关口,在此进行病毒的查杀。在深信服中就有一个EDR设备,该设备就是有两种部署,一个部署在网关&#xf…

[Kubernetes] KubeKey 部署 K8s v1.28.8

文章目录 1.K8s 部署方式2.操作系统基础配置3.安装部署 K8s4.验证 K8s 集群5.部署测试资源 1.K8s 部署方式 kubeadm: kubekey, sealos, kubespray二进制: kubeaszrancher 2.操作系统基础配置 主机名内网IP外网IPmaster192.168.66.2139.198.9.7node1192.168.66.3139.198.40.17…

【竞技宝】英超:曼联4球惨败水晶宫,滕哈赫下课倒计时

曼联在本轮客场挑战水晶宫,这场比赛对于红魔来说就是不折不扣的复仇之战。因为,曼联曾经主场输给过水晶宫。所以,曼联再次遇到水晶宫,自然是憋着一口气要复仇。只是,曼联重压之下彻底迷失,被水晶宫4比0击溃。或许赛前有部分红魔球迷,会预料到曼联可能会输球,但是他们绝对不会想…

【Golang】VSCode进行GO的调试

原来的launch.json {"version": "0.2.0","configurations": [{"name": "Golang","type": "go","request": "launch","program": "${workspaceFolder}","…

[QNX] BSP 网络性能优化:调优io-pkt和ClockPeriod提升网速

0 概要 本文介绍如何在QNX系统上优化网络性能,主要通过调整io-pkt和ClockPeriod参数来实现。通过优化,网络吞吐量可以得到显著提升。 1 优化方法 1.1 调整io-pkt的mclbytes参数: io-pkt是QNX系统中常用的网络协议栈,其mclbytes参数指定了…

LearnOpenGL(八)之光照

一、冯氏光照模型 冯氏光照模型(Phong Lighting Model)主要由环境(Ambient)、漫反射(Diffuse)和镜面(Specular)光照这三部分组成,各效果如下: 1、环境光照 即使在黑暗的情况下,世界上通常也仍然有一些光亮(月亮、远处的光&#…

只允许内网访问时,如何设置hosts

1、Hosts文件简介 hosts文件是一个没有扩展名的计算机文件,用于将主机名与对应的 IP 地址关联起来。在操作系统中,hosts文件通常用于在本地解析域名,以便将域名映射到特定的IP地址。这个文件可以用来屏蔽广告、加速访问特定网站、解决DNS解析…

微服务项目实战-黑马头条(十三):持续集成

文章目录 项目部署_持续集成1 今日内容介绍1.1 什么是持续集成1.2 持续集成的好处1.3 今日内容 2 软件开发模式2.1 软件开发生命周期2.2 软件开发瀑布模型2.3 软件的敏捷开发 3 Jenkins安装配置3.1 Jenkins介绍3.2 Jenkins环境搭建3.2.1 Jenkins安装配置3.2.2 Jenkins插件安装3…

第十四届蓝桥杯大赛软件赛省赛(Python大学A组)

2023年蓝桥杯 省赛真题Python大学A组 试题A:特殊日期 试题B:分糖果 试题C:三国游戏 试题D:平均 试题E:翻转 试题F:子矩阵 试题G:阶乘的和 …

张大哥笔记:先挣小钱,再赚大钱

先挣小钱,再赚大钱!挣小钱,无需向上社交! 现在很流行向上社交,反正只要前面加上一个向上,就感觉很牛逼的样子,有必要吗?我认为是没有必要的。 人活着不是为了社交,而是找…

大模型日报|今日必读的 4 篇大模型论文

大家好,今日必读的大模型论文来啦! 1.清华、智谱AI 团队推出无限超分辨率模型 Inf-DiT 近年来,扩散模型在图像生成方面表现出了卓越的性能。然而,由于在生成超高分辨率图像(如 40964096)的过程中内存会二…

银河麒麟QT项目打包详细教程

银河麒麟QT项目打包详细教程 一、QT项目打包 下载linuxdeployqt,下载地址:https://github.com/probonopd/linuxdeployqt/releases 安装Linuxdeployqt 2.1 为了安装方便,将下载下来的文件名称改短些 mv linuxdeployqt-6-x86_64.AppImage lin…

数据分析从入门到精通 1.numpy剑客修炼

会在某一瞬间突然明白,有些牢笼是自己给自己的 —— 24.5.5 一、数据分析秘笈介绍 1.什么是数据分析 是把隐藏在一些看似杂乱无章的数据背后的信息提炼出来,总结出所研究对象的内在规律。使得数据的价值最大化 案例: 分析用户的消…

webpack5基础和配置

初步体验webpack打包 webpack是一个静态资源打包工具。 它会以一个或多个文件作为打包的入口,将我们整个项目所有文件编译组合成一个或多个文件输出出去。 输出的文件就是编译好的文件,就可以在浏览器段运行了。 1.初始化最简单的一个目录文件&#xff…
最新文章