0 0

一条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个答案 按时间排序 按投票排序

0 0

采纳的答案

这个问题可以结合SQL语句的理论基础来解释。参考权威书籍《数据库系统-设计,实现与管理》。
首先来理解where字句的本质

where字句术语称“行选择”,用来限制仅检索某些行。
==============================================
然后我们来理解sql语句理论中的关系运算----限制

限制又称为选择,是一个一元操作,它作用于单个关系(亦称表),得到一个新的关系(它由满足特定条件(亦称谓词)的元组组成)。
============================================
再然后来理解刚才说到谓词

在该书中强调了一点,就是谓词,我们可以组成复杂的谓词,怎么组成复杂的谓词了,
通过逻辑运算符“与”、“或”、“非”来生成更为复杂的谓词。
============================================
最后,上面说的“选择或者限制” 与 交集有本质的区别。详细你可以看看该书中的65页的两者操作的区别。

2010年5月06日 19:28
0 0

笛卡尔积, DBMS直接查到a.firstname='xiaoxin'且 a.lastname='niutou'的这一行 就返回给你了

2010年5月07日 08:40
0 0

引用
问题:  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

相关推荐

    DB查询分析器批量执行多条SQL语句并查看各自的执行时间

    - **图1**:显示第一条SQL语句的执行时间为00:00:02:703,返回结果为345040条记录。 - **图2**:第二条SQL语句的执行时间为00:00:00:125,同样返回345040条记录。 - **图3**:第三条SQL语句的执行时间为00:00:00:000...

    ORACLE中SQL执行原理及性能优化研究.pdf

    在Oracle数据库中,SQL执行原理及其性能优化是一个关键的话题,对于提升系统性能具有重大意义。SQL性能优化并非单纯地理解语法就能确保效率,它是一个系统性的工程,涉及到多个层面。 首先,了解SQL语句的执行过程...

    SQL游标原理和使用方法.doc

    关系数据库管理系统本质上是面向集合的,在`MS SQL Server`中并没有一种描述表中单一记录的直接表达形式,除非使用`WHERE`子句来限制只有一条记录被选中。因此,为了进行面向单条记录的数据处理,我们需要借助游标。...

    用一条SQL语句将数据表中某列更新到另一个数据表里

    本文将详细介绍如何使用一条SQL语句来完成这一任务,并通过具体的例子加以说明。 #### 问题描述 假设存在两个数据表T1和T2,它们的结构如下所示: - 表T1: - A1 (非空且唯一) - A2 - A3 - 表T2: - A11 (非空...

    一条Sql的执行过程.doc

    标题中的“一条Sql的执行过程.doc”和描述中提到的“MySQL 实战 45 讲之查询 sql 的内部执行过程”共同指向了一个主题:理解SQL语句在MySQL数据库中的执行流程。这是一个重要的技术知识点,尤其对于数据库管理员和...

    java批量执行SQL

    本文将详细介绍如何利用Java进行批量SQL执行,包括其背景、实现原理、代码示例及优化策略等。 #### 一、批量执行SQL的背景与意义 在日常的业务场景中,如用户注册、数据迁移或系统初始化等,往往涉及到大量的数据...

    SQL注入原理及程序开发预防

    当执行这条语句时,由于`@@VERSION`不是一个整数,因此会抛出错误,但错误消息中会包含数据库版本信息。 ##### 3. 危害扩大—获取服务器所有数据库的名称 通过进一步的SQL注入技巧,攻击者可以获取服务器上的所有...

    打印JdbcTemplate执行sql

    当在一个事务中执行多条SQL语句时,如果其中一个失败,所有操作都将回滚,确保数据的一致性。你可以通过`JdbcTemplate`的`execute`方法执行一组SQL操作,并在需要时捕获并处理异常。 5. **性能优化**:通过日志,...

    详解一条 SQL 的执行过程 - _Phoenix - 博客园.pdf

    本文将详细探讨一条SQL语句从被系统发送到MySQL数据库,直到执行完成的整个过程。 首先,我们的系统在与MySQL数据库进行交互时,需要借助MySQL驱动。驱动程序在系统和数据库之间起到桥梁的作用,它负责建立和管理与...

    批量执行Sql脚本工具(含代码)

    8. **性能优化**:批量执行时,工具可能会采用事务管理来提高效率,例如,将多条SQL语句作为一个事务提交,减少数据库交互次数。 9. **命令行接口**:高效的工具往往提供命令行接口,允许用户通过参数传递脚本路径...

    MySQL日志系统,一条SQL跟新语句是如何执行的,高清

    本知识点将详细介绍一条SQL更新语句在MySQL中的执行流程,以及重做日志(redolog)和归档日志(binlog)的具体作用和工作原理。 首先,一条SQL更新语句的执行流程可以概括为以下几个步骤: 1. 连接器:用户首先...

    如何优雅的将Mybatis日志中的Preparing与Parameters转换为可执行SQL.doc

    对于希望深入了解SQL解析原理或需要定制化处理的开发者来说,可以尝试手动编写脚本来解析日志。 1. **准备工作**: - 首先,复制包含“Preparing: ”和“Parameters: ”的日志到一个文本文件中。 - 使用任何编程...

    腾讯面试:一条SQL语句执行得很慢的原因有哪些?---不看后悔系列(推荐)

    以下是一些可能导致SQL执行慢的原因及其详解: 1. **数据库刷新脏页**:数据库在进行数据更新时,会先将变更写入redo log,而不是立即写入磁盘。当redo log填满,数据库必须暂停其他操作,将数据同步到磁盘,这个...

    oracle sql语句执行流程解析

    一条普通的SQL语句从应用端提交开始,到在数据库中执行完毕,涉及了一系列复杂的过程。理解这些过程,有助于提高数据操作的效率以及进行更有效的SQL优化。 首先,客户端将SQL语句发送到服务器端。这个过程涉及到...

    java执行SQL语句实现查询的通用方法详解

    一、Java执行SQL语句实现查询的通用方法详解 在Java中执行SQL语句实现查询是非常常见的操作,以下是Java执行SQL语句实现查询的通用方法详解。 首先,需要获取数据库连接,使用JDBCTools.getConnection()方法来获取...

    SQL注入原理及防范方法.pdf

    如果开发者未对用户输入进行严格处理,恶意用户便可能利用这一漏洞执行恶意SQL代码,这就是SQL注入攻击。 2. SQL注入实例 假设数据库中存在一条用户记录(用户名:admin,密码:123456),合法用户通过表单输入...

    85提纲挈领的告诉你,SQL语句的执行计划和性能优化有什么关系?.pdf

    SQL语句的执行计划对于数据库性能优化至关重要,因为它能够让我们明白一条SQL语句在数据库中是如何执行的,以及数据库是如何利用索引来提高查询效率的。执行计划显示了数据库执行SQL语句时的逻辑步骤,包括查询的...

    sqlloader数据导入详解

    例如,在给定的示例文件 `/ora9i/fengjie/agent/data/ipaagentdetail200410.txt` 中,每一行代表一条记录,而字段之间则用逗号分隔。 除了基本的字段分隔符之外,还可能需要处理其他情况,比如: - 字段中的特殊...

    sql的执行效率优化

    SQL 执行效率优化是数据库管理和优化中非常重要的一方面,好的 SQL 执行效率可以极大地提高系统的性能和响应速度。本文将从多方面讨论 SQL 执行效率优化的方法和技术。 1. 选择最有效率的表名顺序 在基于规则的...

    SQL手工注入完全篇

    5. **堆叠查询注入**:在一条SQL语句中执行多个查询。 三、SQL注入实战示例 以经典的登录页面为例,如果输入的用户名和密码没有被正确处理,比如: ```sql SELECT * FROM users WHERE username='$username' AND ...

Global site tag (gtag.js) - Google Analytics