Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 没有注意到太多的细节和表达。我的经验法则是将它用于OLTP和key访问类型的操作,并将聚合和不明显的内容(无论这意味着什么)留给procedurest。这解决了性能问题。现在你建议的LINQ的查询比我手工制作的视图还要快。1) SQL视图==>SQL Se_.net_Sql Server_Linq_Entity Framework 6 - Fatal编程技术网

.net 没有注意到太多的细节和表达。我的经验法则是将它用于OLTP和key访问类型的操作,并将聚合和不明显的内容(无论这意味着什么)留给procedurest。这解决了性能问题。现在你建议的LINQ的查询比我手工制作的视图还要快。1) SQL视图==>SQL Se

.net 没有注意到太多的细节和表达。我的经验法则是将它用于OLTP和key访问类型的操作,并将聚合和不明显的内容(无论这意味着什么)留给procedurest。这解决了性能问题。现在你建议的LINQ的查询比我手工制作的视图还要快。1) SQL视图==>SQL Se,.net,sql-server,linq,entity-framework-6,.net,Sql Server,Linq,Entity Framework 6,没有注意到太多的细节和表达。我的经验法则是将它用于OLTP和key访问类型的操作,并将聚合和不明显的内容(无论这意味着什么)留给procedurest。这解决了性能问题。现在你建议的LINQ的查询比我手工制作的视图还要快。1) SQL视图==>SQL Server执行时间:CPU时间=31毫秒,运行时间=28毫秒。2)LINQ==>SQL Server执行时间:CPU时间=15毫秒,运行时间=12毫秒。3)错误LINQ==>SQL Server执行时间:CPU时间=594毫秒,经过的时间=282


没有注意到太多的细节和表达。我的经验法则是将它用于OLTP和key访问类型的操作,并将聚合和不明显的内容(无论这意味着什么)留给procedurest。这解决了性能问题。现在你建议的LINQ的查询比我手工制作的视图还要快。1) SQL视图==>SQL Server执行时间:CPU时间=31毫秒,运行时间=28毫秒。2)LINQ==>SQL Server执行时间:CPU时间=15毫秒,运行时间=12毫秒。3)错误LINQ==>SQL Server执行时间:CPU时间=594毫秒,经过的时间=282毫秒。是否有可能解释一下坏LINQ和好LINQ生成的内容?主要区别在于,如果搜索“坏”查询,则[dbo].[DollarU_JobRuns]与“好”查询中的2相比有4个
var today = DateTime.Today;    
var month = new DateTime(today.Year, today.Month, 1);
var first = month.AddMonths(-1);
var last = month.AddDays(-1);

var baseQuery = (from jr in DollarU_JobRuns
                 where (jr.Day >= first && jr.Day <= last)
                 group jr by new { System = jr.SYSU.Substring(0, 2) }
                    into systemGroup
                 let NbrOfJobRunsSucceeded = systemGroup.Sum(x => x.NbrOfJobRunsSucceeded)
                 let NbrOfJobRunsFailed = systemGroup.Sum(s => s.NbrOfJobRunsFailed)
                 select new
                 {
                     System = systemGroup.Key.System,
                     NbrOfJobRunsSucceeded,
                     NbrOfJobRunsFailed,
                     Total = NbrOfJobRunsSucceeded + NbrOfJobRunsFailed
                 }).OrderByDescending(item => item.Total);

var query = baseQuery.Take(10).Concat(
                baseQuery.Skip(10).Select(item => new
                {
                    System = "Others",
                    NbrOfJobRunsSucceeded = item.NbrOfJobRunsSucceeded,
                    NbrOfJobRunsFailed = item.NbrOfJobRunsFailed,
                    Total = item.NbrOfJobRunsSucceeded + item.NbrOfJobRunsFailed,
                }
                )
            )
            .GroupBy(g => g.System)
            .Select(
                g => new 
                {
                    System = g.Key,
                    NbrOfJobRunsSucceeded = g.Sum(x => x.NbrOfJobRunsSucceeded),
                    NbrOfJobRunsFailed = g.Sum(x => x.NbrOfJobRunsFailed),
                    Total = g.Sum(x => x.Total)
                }
            )
            .OrderByDescending(item => item.Total);

query.Dump();
SELECT 
    [Project9].[C5] AS [C1], 
    [Project9].[C4] AS [C2], 
    [Project9].[C1] AS [C3], 
    [Project9].[C2] AS [C4], 
    [Project9].[C3] AS [C5]
    FROM ( SELECT 
        [GroupBy5].[A1] AS [C1], 
        [GroupBy5].[A2] AS [C2], 
        [GroupBy5].[A3] AS [C3], 
        [GroupBy5].[K1] AS [C4], 
        1 AS [C5]
        FROM ( SELECT 
            [UnionAll1].[C1] AS [K1], 
            SUM([UnionAll1].[C2]) AS [A1], 
            SUM([UnionAll1].[C3]) AS [A2], 
            SUM([UnionAll1].[C4]) AS [A3]
            FROM  (SELECT TOP (10) 
                [Project3].[C2] AS [C1], 
                [Project3].[C1] AS [C2], 
                [Project3].[C4] AS [C3], 
                [Project3].[C3] AS [C4]
                FROM ( SELECT 
                    [Project2].[C1] AS [C1], 
                    [Project2].[C2] AS [C2], 
                    [Project2].[C1] + [Project2].[C3] AS [C3], 
                    [Project2].[C3] AS [C4]
                    FROM ( SELECT 
                        [Project1].[C1] AS [C1], 
                        [Project1].[C2] AS [C2], 
                        (SELECT 
                            SUM([Extent2].[NbrOfJobRunsFailed]) AS [A1]
                            FROM [dbo].[DollarU_JobRuns] AS [Extent2]
                            WHERE ([Extent2].[Day] >= '2017-09-01') AND ([Extent2].[Day] <= '2017-09-30') AND (([Project1].[C2] = (SUBSTRING([Extent2].[SYSU], 0 + 1, 2))) OR (([Project1].[C2] IS NULL) AND (SUBSTRING([Extent2].[SYSU], 0 + 1, 2) IS NULL)))) AS [C3]
                        FROM ( SELECT 
                            [GroupBy1].[A1] AS [C1], 
                            [GroupBy1].[K1] AS [C2]
                            FROM ( SELECT 
                                [Filter1].[K1] AS [K1], 
                                SUM([Filter1].[A1]) AS [A1]
                                FROM ( SELECT 
                                    SUBSTRING([Extent1].[SYSU], 0 + 1, 2) AS [K1], 
                                    [Extent1].[NbrOfJobRunsSucceeded] AS [A1]
                                    FROM [dbo].[DollarU_JobRuns] AS [Extent1]
                                    WHERE ([Extent1].[Day] >= '2017-09-01') AND ([Extent1].[Day] <= '2017-09-30')
                                )  AS [Filter1]
                                GROUP BY [K1]
                            )  AS [GroupBy1]
                        )  AS [Project1]
                    )  AS [Project2]
                )  AS [Project3]
                ORDER BY [Project3].[C3] DESC
            UNION ALL
                SELECT 
                [Project7].[C3] AS [C1], 
                [Project7].[C1] AS [C2], 
                [Project7].[C5] AS [C3], 
                [Project7].[C4] AS [C4]
                FROM ( SELECT 
                    [Project6].[C1] AS [C1], 
                    [Project6].[C1] + [Project6].[C2] AS [C2], 
                    N'Others' AS [C3], 
                    [Project6].[C1] + [Project6].[C2] AS [C4], 
                    [Project6].[C2] AS [C5]
                    FROM ( SELECT 
                        [Project5].[C1] AS [C1], 
                        (SELECT 
                            SUM([Extent4].[NbrOfJobRunsFailed]) AS [A1]
                            FROM [dbo].[DollarU_JobRuns] AS [Extent4]
                            WHERE ([Extent4].[Day] >= '2017-09-01') AND ([Extent4].[Day] <= '2017-09-30') AND (([Project5].[C2] = (SUBSTRING([Extent4].[SYSU], 0 + 1, 2))) OR (([Project5].[C2] IS NULL) AND (SUBSTRING([Extent4].[SYSU], 0 + 1, 2) IS NULL)))) AS [C2]
                        FROM ( SELECT 
                            [GroupBy3].[A1] AS [C1], 
                            [GroupBy3].[K1] AS [C2]
                            FROM ( SELECT 
                                [Filter3].[K1] AS [K1], 
                                SUM([Filter3].[A1]) AS [A1]
                                FROM ( SELECT 
                                    SUBSTRING([Extent3].[SYSU], 0 + 1, 2) AS [K1], 
                                    [Extent3].[NbrOfJobRunsSucceeded] AS [A1]
                                    FROM [dbo].[DollarU_JobRuns] AS [Extent3]
                                    WHERE ([Extent3].[Day] >= '2017-09-01') AND ([Extent3].[Day] <= '2017-09-30')
                                )  AS [Filter3]
                                GROUP BY [K1]
                            )  AS [GroupBy3]
                        )  AS [Project5]
                    )  AS [Project6]
                )  AS [Project7]
                ORDER BY [Project7].[C2] DESC
                OFFSET 10 ROWS ) AS [UnionAll1]
            GROUP BY [UnionAll1].[C1]
        )  AS [GroupBy5]
    )  AS [Project9]
    ORDER BY [Project9].[C3] DESC
With TopItems As
(
    SELECT SUBSTRING( [SYSU],1,2) AS [System]
            , Sum([NbrOfJobRunsSucceeded]) AS NbrOfJobRunsSucceeded
            , Sum([NbrOfJobRunsFailed]) AS NbrOfJobRunsFailed
            , Sum([NbrOfJobRunsSucceeded] + [NbrOfJobRunsFailed]) AS Total
            , ROW_NUMBER() OVER (ORDER BY Sum([NbrOfJobRunsSucceeded] + [NbrOfJobRunsFailed]) DESC) AS Num
    FROM [dbo].[DollarU_JobRuns]    
    WHERE  [Day] >= DATEADD(month, -1, DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0))
            AND [Day] < DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0)
    GROUP BY SUBSTRING( [SYSU],1,2)


)
SELECT [System], NbrOfJobRunsSucceeded, NbrOfJobRunsFailed, Total
FROM TopItems
WHERE Num <= 10
UNION ALL
SELECT 
    'Others'
    , Sum([NbrOfJobRunsSucceeded]) AS NbrOfJobRunsSucceeded
    , Sum([NbrOfJobRunsFailed]) AS NbrOfJobRunsFailed   
    , Sum(Total)
FROM TopItems
WHERE Num > 10
var baseQuery = DollarU_JobRuns
    .Where(jr => jr.Day >= first && jr.Day <= last)
    .GroupBy(jr => new { System = jr.SYSU.Substring(0, 2) })
    .Select(systemGroup => new
    {
        System = systemGroup.Key.System,
        NbrOfJobRunsSucceeded = systemGroup.Sum(x => x.NbrOfJobRunsSucceeded),
        NbrOfJobRunsFailed = systemGroup.Sum(x => x.NbrOfJobRunsFailed),
    })
    .Select(item => new
    {
        item.System,
        item.NbrOfJobRunsSucceeded,
        item.NbrOfJobRunsFailed,
        Total = item.NbrOfJobRunsFailed + item.NbrOfJobRunsFailed
    })
    .OrderByDescending(item => item.Total);