gpt4 book ai didi

sql - 索引是否适用于 "IN"子句

转载 作者:行者123 更新时间:2023-12-03 08:30:19 24 4
gpt4 key购买 nike

如果我有这样的查询:

Select EmployeeId 
From Employee
Where EmployeeTypeId IN (1,2,3)

我在 EmployeeTypeId 上有一个索引字段,SQL 服务器是否仍然使用该索引?

最佳答案

是啊,没错。如果您的 Employee表有 10,000 条记录,只有 5 条记录有 EmployeeTypeId在 (1,2,3) 中,那么它很可能会使用索引来获取记录。但是,如果发现 9,000 条记录具有 EmployeeTypeId在 (1,2,3) 中,那么它很可能只是进行表扫描以获得相应的 EmployeeId s,因为仅遍历整个表比转到索引树的每个分支并单独查看记录要快。

SQL Server 做了很多事情来尝试优化查询的运行方式。但是,有时它不会得到正确的答案。如果您知道 SQL Server 没有使用索引,通过查看查询分析器中的执行计划,您可以告诉查询引擎使用特定索引,并对查询进行以下更改。

SELECT EmployeeId FROM Employee WITH (Index(Index_EmployeeTypeId )) WHERE EmployeeTypeId IN (1,2,3)

假设您在 EmployeeTypeId 上拥有索引字段被命名 Index_EmployeeTypeId .

关于sql - 索引是否适用于 "IN"子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31500/

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