gpt4 book ai didi

sql-server - T-SQL 不等于运算符与 Case 语句

转载 作者:行者123 更新时间:2023-12-01 11:00:09 27 4
gpt4 key购买 nike

假设我有一个 T-SQL 语句:

select * from MyTable
where Code != 'RandomCode'

我的任务是让这种 where 语句执行得更快。联机丛书说肯定查询 (=) 比否定查询 (!= , <>) 更快。

因此,一种选择是将其变成 CASE 语句,例如

select * from MyTable
where
case when Code = 'RandomCode' then 0
else 1 end = 1

有谁知道这是否会比原来的 T-SQL 更快或更慢?

提前致谢。

最佳答案

您必须更具体地说明您对表中的哪些信息感兴趣以及 代码 列的可能值是什么。然后您可以创建适当的索引来加速查询。

例如,如果 Code 列中的值只能是 'RandomCode''OtherCode'' 之一YetAnotherCode',您可以将查询重写为:

SELECT * FROM MyTable WHERE Code = 'OtherCode' OR Code = 'YetAnotherCode'

当然,您需要在 Code 列上建立索引。

如果您必须进行不等式查询,您可以将 SELECT * 更改为更窄的查询,例如:

SELECT Id, Name, Whatever FROM MyTable WHERE Code != 'RandomCode'

然后像这样创建一个索引:

CREATE INDEX idx_Code ON MyTable(Code) INCLUDE (Id,Name,Whatever)

这可以通过将表扫描替换为索引扫描来减少 I/O。

关于sql-server - T-SQL 不等于运算符与 Case 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11839197/

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