[英]SQL: SELECT IN faster and best practice?
如果即时通讯使用2个查询:
首先:查询所需的所有键/ ID
第二个:从tab1中选择*,其中tab1.id在(... ids list .. ,,)中
id列表可以是几千...
这样做是明智的选择还是最佳实践?
通常,在语句中使用IN子句是完全可以接受的最佳实践...假设您对更大的值集使用子查询。
答案应该永远是: 取决于 ! 从您的问题尚不清楚,您的值列表将是SELECT还是对它们进行硬编码。 如果那几千个值在另一个表(临时表或表变量)中,并且您对其进行了子查询,那肯定会更有性能。 即
SELECT * FROM Customer
WHERE CustomerID IN (SELECT ID FROM MyOtherLargeTableOfCustomers)
IN
子句的那列的索引编制得如何? STATISTICS
(如果是SQL Server)。 JOIN
这些表; 那应该总是产生更快的查询。 SELECT * FROM Customer AS C
INNER JOIN MyOtherLargeTableOfCustomers AS M
ON C.CustomerID = M.CustomerID
如果您的ID可在可联接表中查询,则使用内部联接应该给您最快的查询,并给您一个较小的查询以发送到数据库。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.