C# 将Linq转换为Sql查询转换为更好的Sql
所以我需要一些sql查询。从linq生成的sql看起来很低,存储过程超时 这就是我要做的 两张表,如下所示:C# 将Linq转换为Sql查询转换为更好的Sql,c#,sql,sql-server,linq,C#,Sql,Sql Server,Linq,所以我需要一些sql查询。从linq生成的sql看起来很低,存储过程超时 这就是我要做的 两张表,如下所示: dbo.Links ------------- Id Url Title 还有一个看起来像这样的 dbo.Link_Counts ----------------- Url Count 我想做的是编写一个sql查询来实现这一点 var linkCounts = Links.GroupBy(x => x.Url) .Select(grp =>
dbo.Links
-------------
Id
Url
Title
还有一个看起来像这样的
dbo.Link_Counts
-----------------
Url
Count
我想做的是编写一个sql查询来实现这一点
var linkCounts = Links.GroupBy(x => x.Url)
.Select(grp => new Link_Counts
{
Url = grp.First().Url,
Count = grp.Count()
});
InsertAllOnSubmit(linkCounts);
SubmitChanges();
我尝试使用的sql部分是由此生成的
INSERT INTO Link_Counts (Url, Count)
SELECT (
SELECT [t3].[URL]
FROM (
SELECT TOP (1) [t2].[URL]
FROM [Links] AS [t2]
WHERE (([t1].[URL] IS NULL) AND ([t2].[URL] IS NULL)) OR (([t1].[URL] IS NOT NULL) AND ([t2].[URL] IS NOT NULL) AND ([t1].[URL] = [t2].[URL]))
) AS [t3]
) AS [Url], [t1].[value] AS [Count]
FROM (
SELECT COUNT(*) AS [value], [t0].[URL]
FROM [Links] AS [t0]
GROUP BY [t0].[URL]
) AS [t1]
END
显然,对于存储过程来说,它的运行时间太长
任何帮助都将是巨大的
谢谢我想这就是您需要为每个url插入计数的内容:
insert into Link_Counts (Url, Count)
select Url, Count(*)
from dbo.Links
group by Url
我认为这就是您需要为每个url插入计数的内容:
insert into Link_Counts (Url, Count)
select Url, Count(*)
from dbo.Links
group by Url
如果要手动编写SQL,请执行以下操作:
insert into link_counts (url, count)
select url, count(0)
from links
group by url
或者,如果您只是想修复LINQ查询以生成更好的SQL:
var linkCounts =
Links.GroupBy(x => x.Url)
.Select(g => new Link_Counts
{
Url = g.Key,
Count = g.Count()
};
如果要手动编写SQL,请执行以下操作:
insert into link_counts (url, count)
select url, count(0)
from links
group by url
或者,如果您只是想修复LINQ查询以生成更好的SQL:
var linkCounts =
Links.GroupBy(x => x.Url)
.Select(g => new Link_Counts
{
Url = g.Key,
Count = g.Count()
};