日期:2014-05-16  浏览次数:20528 次

连接的顺序重要吗?

??? SQL是一种非过程化的语言,也就是说,只需要描述要获得的数据库对象,而如何以最好的方式执行查询则由数据库服务器负责。服务器根据收集到的数据库对象信息,在多个连接表中选择一个作为开始点(所选择的表被称为驱动表),然后确定连接其他标的顺序,因此,默认在from子句中出现的顺序并不重要。

?

??? 不过,如果希望在查询中以特定的顺序连接各表,那么需要将表按照所需要的顺序排好,然后指定MySQL中的STRAIGHT_JOIN关键字,或者SQL Server中的FORCE ORDER选项,或者在Oracle数据库中使用ORDERED或LEADING优化器提示

??? 例如:

??? mysql>SELECT STRAIGHT_JOIN "fields" FROM table1 INNER JOIN table2 ON ……INNER JOIN table3 ON……