询问一个关于SELECT执行过程的语句
SORRY小弟分数不够 请见谅SELECT 表1.* FROM 表1,表2 WHERE 表1.字段1 = 表2.字段1
--------------
我在网上搜索到这个解释
分析器会先看语句的第一个词,当它发现第一个词是SELECT关键字的时候,它会跳到FROM关键字,然后通过FROM关键字找到表名并把表装入内存。接着是找WHERE关键字,如果找不到则返回到SELECT找字段解析,如果找到WHERE,则分析其中的条件,完成后再回到SELECT分析字段。最后形成一张我们要的虚表。
其它的先不说了,只说WHERE。
wHERE关键字后面的是条件表达式。如果学过C语言等编程语言就会知道,条件表达式计算完成后,会有一个返回值,即非0或0,非0即为真(true),0即为假(false)。同理WHERE后面的条件也有一个返回值,真或假,来确定接下来执不执行SELECT。
问:
根据上面的解释 select语句执行的过程是 分析器检查第一个关键词是否为select 如果是select跳转到from关键词 并且把from后面跟随的表名对应的表装入内存,装入后跳转到where关键字 先对两表进行笛卡尔积 并生成一个两表对应关系的虚表
但是后面是如何执行的
--------------
我主要是想知道 相对来说更深层的select执行过程
我不清楚后续的执行过程,还请各位讲解一下。
其包括生成虚表后 where的判断条件如何筛选出虚表中匹配的数据 以及select是如何识别并且选择出匹配数据的对应元祖以及字段的