请问多表查询时,DBMS会先做广义笛卡尔积么? 如果做的话,那效率也太低了尤其是连接的列没做索引的话 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看着这名字偶就晕: "广义笛卡尔积"....这是根据你的查询来的. 如果你是CROSS OUT JOIN (or FULL JOIN)的话, 你说得对.但是, 如果你用了LEFT (or RIGHT or INNER) JOIN的话, SQL Server是不做"广义笛卡尔积"的. 楼上的,楼主说得本来就对啊。如果没有关键字说明,FROM后面多个表之间只用‘,’连接,结果当然是广义笛卡尔积。 课本里面很多的查询,为了规避join而用了这种方式。 请问left的时候,是怎么实现的呢?如果不做广义积的话?此外full join的时候,如果连接的键是索引,是不是就不用做笛卡尔积了? 楼主说的应该是对的,先做笛卡尔积,再进行select,可以从SQL Server的执行计划中看出来的。 一般流程:1、from后面的表,迪卡尔集2、表连接 on3、添加外部行 left/right4、where5、group by……8、select…… 这种写法不推荐。。还是用join关键字 2000有三种方式:nested loop、merge、hash具体的搜索一下就知道了 sql 的逻辑顺序确实是先做笛卡尔乘积的,但实际上生成的查询计划一般不会这么做.inside sql server 2005 t-sql 这书的第一章就讲这个. 有可能会用临时索引,即我们经常在查询计划里见到的Indexed Lazy spool. |zyciis| 如何查询出表的最后10条记录,按主键ID ASC 排序呢.. 我写了一条,但要查询两次, 大家看看 100分求一SQL行转列 sql2000的事务回滚问题 SQL server 安装问题 截取字符串 表名 急!!!在线!怎样打开sql2000数据库文件 关系图可不可以跨服务器建关系 请帮看看这些代码为什么会出错? delphi 6.0 安装包的制作,在线等 字段求和问题 大家看看下面存储过程有什么问题? 怎样使用变量查询唯一记录?
如果没有关键字说明,FROM后面多个表之间只用‘,’连接,结果当然是广义笛卡尔积。
此外full join的时候,如果连接的键是索引,是不是就不用做笛卡尔积了?
1、from后面的表,迪卡尔集
2、表连接 on
3、添加外部行 left/right
4、where
5、group by
……
8、select
……
这种写法不推荐。。还是用join关键字
有可能会用临时索引,即我们经常在查询计划里见到的Indexed Lazy spool.