如果我使用2个查询:
第一:查询所需的所有键/ ID
第二步:从tab1中选择*,其中tab1.id在(... ids list .. ,,)
ids列表可以有几千...
是明智的还是最佳的做法或建议做那样的事情?
作为一般规则,在语句中使用IN子句是完全可以接受的最佳实践...假设您使用子查询来处理更大的值集.
答案应该始终是:这取决于!从您的问题中不清楚您的值列表是否是SELECT,或者您是否对它们进行硬编码.如果数千个值存在于另一个表(临时表或表变量)中并且您将它们取消了它们,那肯定会更高效.即
SELECT * FROM Customer
WHERE CustomerID IN (SELECT ID FROM MyOtherLargeTableOfCustomers)
Run Code Online (Sandbox Code Playgroud)
IN子句的列的索引程度如何?STATISTICS(如果SQL Server)定期更新.JOIN这些表格; 应始终产生更快的查询.SELECT * FROM Customer AS C
INNER JOIN MyOtherLargeTableOfCustomers AS M
ON C.CustomerID = M.CustomerID
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2693 次 |
| 最近记录: |