表定义:
CREATE TABLE BOOK(
    ID NUMBER,
    PRICE NUMBER
);
CREATE TABLE BA(
    ID NUMBER,
    AUTHOR VARCHAR(30)
);
说明:BA表是BOOK-AUTHOR表,同一ID可以有多个AUTHOR。
查询:检索图书价格超过90元的那些作者的姓名。
SQL语句如下:
1、SELECT BA.AUTHOR FROM BA,BOOK WHERE BA.ID=BOOK.ID AND BOOK.PRICE>90;
2、SELECT BA.AUTHOR FROM BA WHERE BA.ID IN (SELECT BOOK.ID FROM BOOK WHERE BOOK.PRICE>90);
3、SELECT BA.AUTHOR FROM BA WHERE EXISTS (SELECT * FROM BOOK WHERE BOOK.ID=BA.ID AND BOOK.PRICE>90);
我知道3比2的执行效率高一些,但机理知道的不是很清楚,下面是一本书中解释(我看不太懂):
   in关键字表示验证某个值是否在指定的列表中,exists关键字表示某个值是否存在。使用in关键字会真正的进行比较,而exists关键字强调存在性,而不进行比较。如果使用了in关键字,那么系统由于执行确实的比较操作而增大了执行成本。因此,在可以使用exists关键字的地方一定要使用exists关键字。(SSL:不知所云)
1和3的执行效率哪个高?EXISTS属于子查询么?
请大家帮我分析一下。先谢过。