关于表关联时SQL效率的问题
一般两个表关联我知道常用的有以下三种方法
- SQL code
1:SELECT * FROM A,B WHERE A.ID=B.ID AND A.NAME='ASDF'2:SELECT * FROM A INNER OUTER JOIN B ON A.ID=B.ID AND A.NAME='ASDF'3:SELECT * FROM A WHERE A.ID=(SELECT ID FROM B WHERE NAME='ASDF')
请问这三种方法有什么区别,在数据量大的时候哪种更有效呢?
[解决办法]
要看执行计划,一般情况下两者是一样的
[解决办法]
还是要从执行计划分析
[解决办法]
还可以用exists,
一般来说效率是一样的,SQL Server数据库引擎会对查询进行优化
[解决办法]
首先,2,3都是错的
- SQL code
2:SELECT * FROM A INNER JOIN B ON A.ID=B.ID AND A.NAME='ASDF'3:SELECT * FROM B WHERE B.ID IN (SELECT ID FROM A WHERE NAME='ASDF') --这个结果字段是不同的
[解决办法]
第二种是错误的,
- SQL code
SELECT * FROM A INNER JOIN B ON A.ID=B.ID AND A.NAME='ASDF'
[解决办法]
- SQL code
SELECT * FROM A INNER JOIN B ON A.ID=B.ID WHERE A.NAME='ASDF'/*常规这个写法*/
[解决办法]
用连接写法吧