gpt4 book ai didi

c# - 如何判断 Entities Framework 6+ 查询生成的 SQL 是否使用索引?

转载 作者:太空宇宙 更新时间:2023-11-03 10:27:23 24 4
gpt4 key购买 nike

我有一个 C# Entities Framwork 6+ 项目。我使用以下 SO 帖子为每个 SQL 操作生成的 SQL 打印到输出 Pane :

How do I view the SQL generated by the Entity Framework?

如果查询中使用的字段有索引,我如何判断查询是否正在使用查询的可用索引?

这是打印到“输出” Pane 的实际 SQL 查询:

SQL generated: SELECT 
[GroupBy1].[A1] AS [C1]
FROM ( SELECT
COUNT(1) AS [A1]
FROM [dbo].[Canonicals] AS [Extent1]
WHERE ([Extent1].[StableID] = @p__linq__0) OR (([Extent1].[StableID] IS NULL) AND (@p__linq__0 IS NULL))
) AS [GroupBy1]

这是生成该 SQL 的 C# 代码。请注意 StableID 属性/字段确实有一个索引:

var sqlQuery = this._dbContext.CanonicalSentences.Where((r) => r.StableID.Equals(stableID));

return sqlQuery.Count() > 0;

这里是在 StableID 属性之前使用数据注释声明 StableID 索引:

[Index]
[IndexAttribute("StableID", 0, IsUnique = true), StringLength(30)]
public string StableID { get; set; }

跟进:如果显示的 SQL 使用 StableId 索引,请告诉我如何使 Entities Framework(或其他)生成正确的 SQl 以使用索引。

最佳答案

使用哪个索引由 DBMS(我认为你的情况是 SQL Server)决定。要查看使用了哪个索引(在您的情况下是否使用了索引),请转到 SQL Management studio,将查询粘贴到查询窗口中,然后单击“显示执行计划”。

关于c# - 如何判断 Entities Framework 6+ 查询生成的 SQL 是否使用索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31270926/

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