2010-04-29 109 views
6

以为我会问有知识的StackOverflow社区今天在我的脑海里的问题,我似乎无法找到答案。SQL“IN”语句与使用“OR”之间是否有任何性能差异?

“IN”或使用“OR”之间是否存在性能差异或优势?

即,是

SELECT类型与类型WHERE typecat IN( 'ABC', '高清')

优于

SELECT类型与类型WHERE typecat = 'ABC' OR typecat = '高清'

添加:使用SQL Server 2008

+1

什么服务器? SQL Server,MySQL,Postgres,Oracle ...? – 2010-04-29 19:50:22

+2

我曾经问过这个问题:http://stackoverflow.com/questions/2343242/sql-where-field-in-vs-where-field-with-multiple-ors – froadie 2010-04-29 19:54:20

+0

对不起,使用SQL Server 2008. – 2010-04-29 20:07:53

回答

1

如果我没有记错,SQL Server会将您拥有的IN语句转换为OR语句。

1

没有,没有性能差异。优化器负责处理它。

2

这完全取决于您正在使用的SQL产品,您还没有说明。我经常使用的一个RDBMS不能使用OR版本的索引。

+0

小心揭示所述RDBMS的名称? – 2010-04-29 19:54:02

+0

R:基地(从过去爆炸)。 – 2010-04-29 20:04:39

+0

对不起,使用SQL Server 2008。 – 2010-04-29 20:07:21