Ben*_*Ben 2 database sql-server performance
我们有两个表:
我们希望检索给定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
);
Run Code Online (Sandbox Code Playgroud)
我们的问题是:何时以及是否更好地使用DISTINCT获取较小的记录集而不是检索整个表和IN语句将表格移动到第一个匹配.(我们猜这就是它的作用;-))
对于不同的数据库,这是不同的,有一个共同的答案吗?
或者有更好的方法吗?(我们在.NET领域)
小智 11
您可以使用联接:
SELECT DISTINCT DocumentType.*
FROM DocumentType
INNER JOIN Document
ON DocumentType.id=Document.document_type_id
WHERE Document.showon_id = 42
Run Code Online (Sandbox Code Playgroud)
我认为这是最好的方法.