日期: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……