gpt4 book ai didi

SQL:SELECT IN 更快和最佳实践?

转载 作者:行者123 更新时间:2023-12-04 18:23:11 25 4
gpt4 key购买 nike

如果我使用 2 个查询:

首先:查询所有需要的键/ID

第二个:select * from tab1 where tab1.id in (...ids list..,,)

ids 列表可以有几千个...

这样做是否明智、最佳做法或建议这样做?

最佳答案

作为一般规则,在您的语句中使用 IN 子句是完全可以接受的最佳实践...假设您使用子查询来获取更大的值集。

答案应该始终是:视情况而定!从您的问题中不清楚您的值列表是否是 SELECT,或者您是否会对它们进行硬编码。如果这几千个值在另一个表(临时表或表变量)中并且您对它们进行子查询,那肯定会更有效率。即

    SELECT * FROM Customer 
WHERE CustomerID IN (SELECT ID FROM MyOtherLargeTableOfCustomers)
  • 您正在执行 IN 子句的那一列的索引有多好?
  • 数据类型是什么?如果是数字数据类型,那么您应该不会有任何性能问题。
  • 确保您的 STATISTICS(如果是 SQL Server)定期更新。
  • 如果数据类型是基于 char 或 guid 的,您可能会遇到一些性能问题,尤其是当您同时运行多个查询时,并且您所描述的列表有数千个。
  • 考虑JOIN代替这些表;这应该总是产生更快的查询。
SELECT * FROM Customer AS C 
INNER JOIN MyOtherLargeTableOfCustomers AS M
ON C.CustomerID = M.CustomerID

关于SQL:SELECT IN 更快和最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1220417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com