gpt4 book ai didi

sql - 值 = 字段与字段 = sql 中的值之间的差异

转载 作者:行者123 更新时间:2023-12-01 01:48:25 24 4
gpt4 key购买 nike

我在面试中被问到一个棘手的 SQL 问题。

Select * from Employee where EmployeeId = 23
Select * from Employee where 23 = EmployeeId

请帮我找出上述陈述之间的区别,是否与索引有关?

最佳答案

我在 SQL Server 中做到了这一点,但我假设每个优化器都以相同的逻辑方式工作。这两个查询做同样的事情:

CREATE TABLE #Employees (ID   INT IDENTITY(1, 1), name NVARCHAR(100));
INSERT INTO #Employees VALUES('Test1'), ('Test2');

SELECT * FROM #Employees WHERE ID = 1;
SELECT * FROM #Employees WHERE 1 = ID;

如果表上没有索引,它也会执行相同的表扫描:

enter image description here

如果您添加一个索引,然后执行相同的两个查询,您将获得相同的计划,但使用索引查找而不是表扫描
ALTER TABLE #Employees ADD CONSTRAINT [PK_Employees] PRIMARY KEY CLUSTERED([ID] ASC);

SELECT * FROM #Employees WHERE ID = 1;
SELECT * FROM #Employees WHERE 1 = ID;

enter image description here

如果你也想测试它,记得放下 table :)
DROP TABLE #Employees;

关于sql - 值 = 字段与字段 = sql 中的值之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46659960/

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