gpt4 book ai didi

entity-framework-4 - 从 Entity Framework 生成的 T-SQL 的性能

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

尽管我的 DBA 强烈反对,但我最近在一个项目中使用了 Entity Framework。所以有一天他来到我的办公室提示生成的 T-SQL 到达了他的数据库。

比如我想根据id选商品,我这样写:

context.Products.FirstOrDefault(p=>p.Id==id);

转化为

SELECT ... FROM (SELECT TOP 1 ... FROM PRODUCTS WHERE ID=@id)

所以他在喊,“你到底为什么要写一个 SELECT * FROM (SELECT TOP 1)”

所以我把我的代码改成了

context.Products.Where(p=>p.Id==id).ToList().FirstOrDefault()

这会产生一个更简洁的 T-SQL:

SELECT ... FROM PRODUCTS WHERE ID=@id

内查询和TOP 1消失了。废话不多说了,我的问题是:第一个查询真的会给 SQL Server 带来开销吗?比第二种方法更难解析吗? Id 列上有聚集索引。我想要一个好的答案,这样我就可以把它擦在他的脸上(或我的脸上)

谢谢,
西摩斯

最佳答案

您是否尝试过手动运行查询并比较执行计划?

这里最大的问题不是 SQL 没有完全符合您的 DBA 标准(尽管我相当确定查询引擎会优化额外的选择)。第二个查询实际上返回了 Products 表的全部内容,然后您可以在内存中对其进行分析,这绝对是一个应该由 DB 而不是应用程序层执行的任务。

简而言之,他是一个 Nerd ;保持原样。

关于entity-framework-4 - 从 Entity Framework 生成的 T-SQL 的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11013460/

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