-
一条SQL的执行原理5
问题: SELECT * FROM TABLE a WHERE a.firstname='xiaoxin' AND a.lastname='niutou' 这个SQL的执行逻辑已经原理谁知道?
是先根据条件a.firstname='xiaoxin'扫描得到一个结果A,然后根据条件a.lastname='niutou'得到另一个结果B,最后取A和B的交集 对吗?
还是所先得到A,然后在A的基础上根据条件B得出最终结果?
请各位软件工友不吝赐教! (希望得到权威回答)2010年5月06日 19:04
3个答案 按时间排序 按投票排序
-
采纳的答案
这个问题可以结合SQL语句的理论基础来解释。参考权威书籍《数据库系统-设计,实现与管理》。
首先来理解where字句的本质
where字句术语称“行选择”,用来限制仅检索某些行。
==============================================
然后我们来理解sql语句理论中的关系运算----限制
限制又称为选择,是一个一元操作,它作用于单个关系(亦称表),得到一个新的关系(它由满足特定条件(亦称谓词)的元组组成)。
============================================
再然后来理解刚才说到谓词
在该书中强调了一点,就是谓词,我们可以组成复杂的谓词,怎么组成复杂的谓词了,
通过逻辑运算符“与”、“或”、“非”来生成更为复杂的谓词。
============================================
最后,上面说的“选择或者限制” 与 交集有本质的区别。详细你可以看看该书中的65页的两者操作的区别。2010年5月06日 19:28
-
笛卡尔积, DBMS直接查到a.firstname='xiaoxin'且 a.lastname='niutou'的这一行 就返回给你了
2010年5月07日 08:40
-
引用问题: SELECT * FROM TABLE a WHERE a.firstname='xiaoxin' AND a.lastname='niutou' 这个SQL的执行逻辑已经原理谁知道?
这个问题,我结合自己使用Oracle的经验来说说:
Oracle实际上是根据从下往上,从右到左的规则来解析这个sql的,实际上是先根据a.lastname='niutou' 先筛选出一部分数据集,然后再根据a.firstname='xiaoxin' 在之前的数据集的基础再进行筛选。
当然,现在的数据库已经提供了相应的优化器,在内部会自动对sql语句进行优化。
如果你对Oracle感兴趣,可以去搜一下“Oracle sql 优化”、“Oracle执行计划”等。2010年5月06日 22:21
相关推荐
- **图1**:显示第一条SQL语句的执行时间为00:00:02:703,返回结果为345040条记录。 - **图2**:第二条SQL语句的执行时间为00:00:00:125,同样返回345040条记录。 - **图3**:第三条SQL语句的执行时间为00:00:00:000...
在Oracle数据库中,SQL执行原理及其性能优化是一个关键的话题,对于提升系统性能具有重大意义。SQL性能优化并非单纯地理解语法就能确保效率,它是一个系统性的工程,涉及到多个层面。 首先,了解SQL语句的执行过程...
关系数据库管理系统本质上是面向集合的,在`MS SQL Server`中并没有一种描述表中单一记录的直接表达形式,除非使用`WHERE`子句来限制只有一条记录被选中。因此,为了进行面向单条记录的数据处理,我们需要借助游标。...
本文将详细介绍如何使用一条SQL语句来完成这一任务,并通过具体的例子加以说明。 #### 问题描述 假设存在两个数据表T1和T2,它们的结构如下所示: - 表T1: - A1 (非空且唯一) - A2 - A3 - 表T2: - A11 (非空...
标题中的“一条Sql的执行过程.doc”和描述中提到的“MySQL 实战 45 讲之查询 sql 的内部执行过程”共同指向了一个主题:理解SQL语句在MySQL数据库中的执行流程。这是一个重要的技术知识点,尤其对于数据库管理员和...
本文将详细介绍如何利用Java进行批量SQL执行,包括其背景、实现原理、代码示例及优化策略等。 #### 一、批量执行SQL的背景与意义 在日常的业务场景中,如用户注册、数据迁移或系统初始化等,往往涉及到大量的数据...
当执行这条语句时,由于`@@VERSION`不是一个整数,因此会抛出错误,但错误消息中会包含数据库版本信息。 ##### 3. 危害扩大—获取服务器所有数据库的名称 通过进一步的SQL注入技巧,攻击者可以获取服务器上的所有...
当在一个事务中执行多条SQL语句时,如果其中一个失败,所有操作都将回滚,确保数据的一致性。你可以通过`JdbcTemplate`的`execute`方法执行一组SQL操作,并在需要时捕获并处理异常。 5. **性能优化**:通过日志,...
本文将详细探讨一条SQL语句从被系统发送到MySQL数据库,直到执行完成的整个过程。 首先,我们的系统在与MySQL数据库进行交互时,需要借助MySQL驱动。驱动程序在系统和数据库之间起到桥梁的作用,它负责建立和管理与...
8. **性能优化**:批量执行时,工具可能会采用事务管理来提高效率,例如,将多条SQL语句作为一个事务提交,减少数据库交互次数。 9. **命令行接口**:高效的工具往往提供命令行接口,允许用户通过参数传递脚本路径...
本知识点将详细介绍一条SQL更新语句在MySQL中的执行流程,以及重做日志(redolog)和归档日志(binlog)的具体作用和工作原理。 首先,一条SQL更新语句的执行流程可以概括为以下几个步骤: 1. 连接器:用户首先...
对于希望深入了解SQL解析原理或需要定制化处理的开发者来说,可以尝试手动编写脚本来解析日志。 1. **准备工作**: - 首先,复制包含“Preparing: ”和“Parameters: ”的日志到一个文本文件中。 - 使用任何编程...
以下是一些可能导致SQL执行慢的原因及其详解: 1. **数据库刷新脏页**:数据库在进行数据更新时,会先将变更写入redo log,而不是立即写入磁盘。当redo log填满,数据库必须暂停其他操作,将数据同步到磁盘,这个...
一条普通的SQL语句从应用端提交开始,到在数据库中执行完毕,涉及了一系列复杂的过程。理解这些过程,有助于提高数据操作的效率以及进行更有效的SQL优化。 首先,客户端将SQL语句发送到服务器端。这个过程涉及到...
一、Java执行SQL语句实现查询的通用方法详解 在Java中执行SQL语句实现查询是非常常见的操作,以下是Java执行SQL语句实现查询的通用方法详解。 首先,需要获取数据库连接,使用JDBCTools.getConnection()方法来获取...
如果开发者未对用户输入进行严格处理,恶意用户便可能利用这一漏洞执行恶意SQL代码,这就是SQL注入攻击。 2. SQL注入实例 假设数据库中存在一条用户记录(用户名:admin,密码:123456),合法用户通过表单输入...
SQL语句的执行计划对于数据库性能优化至关重要,因为它能够让我们明白一条SQL语句在数据库中是如何执行的,以及数据库是如何利用索引来提高查询效率的。执行计划显示了数据库执行SQL语句时的逻辑步骤,包括查询的...
例如,在给定的示例文件 `/ora9i/fengjie/agent/data/ipaagentdetail200410.txt` 中,每一行代表一条记录,而字段之间则用逗号分隔。 除了基本的字段分隔符之外,还可能需要处理其他情况,比如: - 字段中的特殊...
SQL 执行效率优化是数据库管理和优化中非常重要的一方面,好的 SQL 执行效率可以极大地提高系统的性能和响应速度。本文将从多方面讨论 SQL 执行效率优化的方法和技术。 1. 选择最有效率的表名顺序 在基于规则的...
5. **堆叠查询注入**:在一条SQL语句中执行多个查询。 三、SQL注入实战示例 以经典的登录页面为例,如果输入的用户名和密码没有被正确处理,比如: ```sql SELECT * FROM users WHERE username='$username' AND ...