当前位置:  开发笔记 > 编程语言 > 正文

SQL Server 2005性能:WHERE IN语句中的不同或完整表

如何解决《SQLServer2005性能:WHEREIN语句中的不同或完整表》经验,为你挑选了1个好方法。

我们有两个表:

文档:id,title,document_type_id,showon_id

DocumentType:id,name

关系:DocumentType有很多文档.(Document.document_type_id = DocumentType.id)

我们希望检索给定ShowOn_Id的所有文档类型的列表.

我们看到两种可能性:

SELECT DocumentType.*
FROM DocumentType
WHERE DocumentType.id IN (
    SELECT DISTINCT Document.document_type_id FROM Document WHERE showon_id = 42
);

SELECT DocumentType.*
FROM DocumentType
WHERE DocumentType.id IN (
    SELECT Document.document_type_id FROM Document WHERE showon_id = 42
);

我们的问题是:何时以及是否更好地使用DISTINCT获取较小的记录集而不是检索整个表和IN语句将表格移动到第一个匹配.(我们猜这就是它的作用;-))

对于不同的数据库,这是不同的,有一个共同的答案吗?

或者有更好的方法吗?(我们在.NET领域)



1> 小智..:

您可以使用联接:

SELECT DISTINCT DocumentType.*
FROM DocumentType
INNER JOIN Document
ON DocumentType.id=Document.document_type_id
WHERE Document.showon_id = 42

我认为这是最好的方法.

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有