普通网友 2010-05-06 19:04
浏览 350
已采纳

一条SQL的执行原理

[size=medium]问题: 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得出最终结果?

请各位软件工友不吝赐教! (希望得到权威回答)[/size]

  • 写回答

3条回答 默认 最新

  • qwe_rt 2010-05-06 19:28
    关注

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

    where字句术语称“行选择”,用来[color=red][size=medium]限制[/size][/color]仅检索某些行。

    然后我们来理解sql语句理论中的关系运算----限制

    限制又称为选择,是一个一元操作,它作用于单个关系(亦称表),得到一个新的关系(它由满足特定条件(亦称[size=medium]谓词[/size])的元组组成)。

    再然后来理解刚才说到谓词

    在该书中强调了一点,就是谓词,我们可以组成复杂的谓词,怎么组成复杂的谓词了,

    通过逻辑运算符“与”、“或”、“非”来生成更为复杂的谓词。

    最后,上面说的“选择或者限制” 与 交集有本质的区别。详细你可以看看该书中的65页的两者操作的区别。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码