你可以把你的查询该成 select * from a where exists(select * from b where b.id=a.id) 这样可以快一些。
查询语句的设计 SQL Server优化器通过分析查询语句,自动对查询进行优化并决定最有效的执行方案。优化器分析查询语句来决定那个子句可以被优化,并针对可以被优化查询的子句来选择有用的索引。最后优化器比较所有可能的执行方案并选择最有效的一个方案出来。 在执行一个查询时,用一个where子句来限制必须处理的行数,除非完全需要,否则应该避免在一个表中无限制地读并处理所有的行。 例如下面的例子, select qty from sales where stor_id=7131 是很有效的比下面这个无限制的查询 select qty from sales 避免给客户的最后数据选择返回大量的结果集。允许SQL Server运行满足它目的的函数限制结果集的大小是更有效的。 这能减少网络I/O并能提高多用户的相关并发时的应用程序性能。因为优化器关注的焦点就是where子句的查询,以利用有用的索引。在表中的每一个索引都可能成为包括在where子句中的侯选索引。为了最好的性能可以遵照下面的用于一个给定列column1的索引。 第一:在表中的column1列上有一个单索引 第二:在表中有多索引,但是column1是第一个索引的列不要在where子句中使用没有column1列索引的查询语句,并避免在where子句用一个多索引的非第一个索引的索引。 这时多索引是没有用的。 For example, given a multicolumn index on the au_lname, au_fname columns of the authors table in the pubs database, 下面这个query语句利用了au_lname上的索引 SELECT au_id, au_lname, au_fname FROM authors WHERE au_lname = ’White’ AND au_fname = ’Johnson’ SELECT au_id, au_lname, au_fname FROM authors WHERE au_lname = ’White’ 下面这个查询没有利用索引,因为他使用了多索引的非第一个索引的索引 SELECT au_id, au_lname, au_fname FROM authors WHERE au_fname = ’Johnson’
你上面SQL语句子查询不会执行N次。同样你也可以通过SET STATISTICS IO{ON/OFF}来优化你自己的查询
select * from a where exists(select * from b where b.id=a.id)
这样可以快一些。
在执行一个查询时,用一个where子句来限制必须处理的行数,除非完全需要,否则应该避免在一个表中无限制地读并处理所有的行。
例如下面的例子,
select qty from sales where stor_id=7131
是很有效的比下面这个无限制的查询
select qty from sales
避免给客户的最后数据选择返回大量的结果集。允许SQL Server运行满足它目的的函数限制结果集的大小是更有效的。
这能减少网络I/O并能提高多用户的相关并发时的应用程序性能。因为优化器关注的焦点就是where子句的查询,以利用有用的索引。在表中的每一个索引都可能成为包括在where子句中的侯选索引。为了最好的性能可以遵照下面的用于一个给定列column1的索引。
第一:在表中的column1列上有一个单索引
第二:在表中有多索引,但是column1是第一个索引的列不要在where子句中使用没有column1列索引的查询语句,并避免在where子句用一个多索引的非第一个索引的索引。
这时多索引是没有用的。
For example, given a multicolumn index on the au_lname, au_fname columns of the authors table in
the pubs database,
下面这个query语句利用了au_lname上的索引
SELECT au_id, au_lname, au_fname FROM authors
WHERE au_lname = ’White’
AND au_fname = ’Johnson’
SELECT au_id, au_lname, au_fname FROM authors
WHERE au_lname = ’White’
下面这个查询没有利用索引,因为他使用了多索引的非第一个索引的索引
SELECT au_id, au_lname, au_fname FROM authors
WHERE au_fname = ’Johnson’