哪一个是有效的 - 通过缩小或直接过滤进行过滤

时间:2014-12-22 13:18:37

标签: sql sql-server sql-server-2008-r2 rdbms

如果invoice.userId和invoiceline.invoiceId都有索引,则以下两个中的哪一个会更快。 invoice.id是一个主键,所以即使它有一个索引。

select invoiceline.item, invoiceline.rate, invoiceline.vat
from invoice 
inner join invoiceline
  on invoice.id = invoiceline.invoiceId
where invoiceline.id = @invoiceId
AND invoice.userId = @userId


select invoiceline.item, invoiceline.rate, invoiceline.vat
from invoiceline
where invoiceline.invoiceId = @invoiceId

1 个答案:

答案 0 :(得分:1)

如果您想了解性能,那么您应该尝试对系统上的数据运行查询。

在这种情况下,两者都会很快运行。但是第一个版本必须在两个页面(或两个索引)中查找数据,而第二个版本只需要访问一个表。我希望第二个会稍快一些。