powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как это сказать по линкувски? (left outer join по двум полям)
25 сообщений из 127, страница 2 из 6
Как это сказать по линкувски? (left outer join по двум полям)
    #36355458
семки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
слышу булькающие звуки из туалета
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36357245
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful Calfобязуюсь провести тестирование на больших количествах данных...
Код: plaintext
select @@version
Код: plaintext
1.
2.
3.
Microsoft SQL Server 2005 - 9.00.3068.00 (Intel X86) 
	Feb 26 2008 18:15:01 
	Copyright (c) 1988-2005 Microsoft Corporation
	Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)

Код: plaintext
select count(*) from production.Products
Код: plaintext
1.
-----------
5609792

Таблица продукты и индексы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
CREATE TABLE [production].[Products](
	[ProductID] [int] IDENTITY( 1 , 1 ) NOT NULL,
	[SortCode] [nvarchar]( 8 ) NOT NULL,
	[StyleCode] [nvarchar]( 8 ) NOT NULL,
	[FabricCode] [nvarchar]( 8 ) NOT NULL,
	[LKBlindTypeID] [int] NOT NULL,
	[LKColourID] [int] NOT NULL,
	[MinimumWidth] [int] NOT NULL,
	[MaximumWidth] [int] NOT NULL,
	[MinimumHeight] [int] NOT NULL,
	[MaximumHeight] [int] NOT NULL,
	[DisplayInListFlag] [char]( 1 ) NOT NULL,
 CONSTRAINT [PK_Products] PRIMARY KEY CLUSTERED 
(
	[ProductID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

CREATE NONCLUSTERED INDEX [_dta_index_Products_9_5575058__K11] ON [production].[Products] 
(
	[DisplayInListFlag] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [_dta_index_Products_9_5575058__K11_K2] ON [production].[Products] 
(
	[DisplayInListFlag] ASC,
	[SortCode] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
GO

ALTER TABLE [production].[Products] ADD  CONSTRAINT [PK_Products] PRIMARY KEY CLUSTERED 
(
	[ProductID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
GO
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36357253
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОРИГИНАЛЬНЫЙ T-SQL
Aнализируемый T-SQL (выполнился в QA за < 1 сек)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
declare @CultureCode char( 5 ) set @CultureCode = 'ru-ru'
select s.SortCode, 
       isnull(t.Name, isnull(s.SortName, N'')) as Name
from production.Sorts s
     left outer join resources.Translations t
	on s.SortCode = t.Code
	and t.CultureCode = @CultureCode
where (s.SortCode in (select SortCode from production.Products
			where (DisplayInListFlag = 'T')
			group by SortCode))
go
SET STATISTICS PROFILE ON
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
SortCode Name
-------- ----------------------------------------------------------------
HORIZAL  Tradicinės horizontalios aliuminės žaliuzės
ISOLITE  Horizontalios žaliuzės Isolite
VEGA     Kasetiniai roletai Vega
VERTIK   Vertikalios žaliuzės

(4 row(s) affected)

Rows                 Executes             StmtText                                                                                                                                                                                                                                                         StmtId      NodeId      Parent      PhysicalOp                     LogicalOp                      Argument                                                                                                                                                                                                                                                         DefinedValues                                                                                                                           EstimateRows  EstimateIO    EstimateCPU   AvgRowSize  TotalSubtreeCost OutputList                                  Warnings Type                                                             Parallel EstimateExecutions
-------------------- -------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------- ----------- ----------- ------------------------------ ------------------------------ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------- ------------- ------------- ------------- ----------- ---------------- ------------------------------------------- -------- ---------------------------------------------------------------- -------- ------------------
4                    1                    select s.SortCode, 
       isnull(t.Name, isnull(s.SortName, N'')) as Name
from production.Sorts s
     left outer join resources.Translations t
	on s.SortCode = t.Code
	and t.CultureCode = @CultureCode
where (s.SortCode in (select SortCode from prod 1           1           0           NULL                           NULL                           NULL                                                                                                                                                                                                                                                             NULL                                                                                                                                    4             NULL          NULL          NULL        0,01830175       NULL                                        NULL     SELECT                                                           0        NULL
0                    0                      |--Compute Scalar(DEFINE:([Expr1009]=isnull([bonzai].[resources].[Translations].[Name] as [t].[Name],[bonzai].[production].[Sorts].[SortName] as [s].[SortName])))                                                                                             1           2           1           Compute Scalar                 Compute Scalar                 DEFINE:([Expr1009]=isnull([bonzai].[resources].[Translations].[Name] as [t].[Name],[bonzai].[production].[Sorts].[SortName] as [s].[SortName]))                                                                                                                  [Expr1009]=isnull([bonzai].[resources].[Translations].[Name] as [t].[Name],[bonzai].[production].[Sorts].[SortName] as [s].[SortName])  4             0             4E-07         89          0,01830175       [s].[SortCode], [Expr1009]                  NULL     PLAN_ROW                                                         0        1
4                    1                           |--Nested Loops(Left Outer Join, WHERE:([bonzai].[production].[Sorts].[SortCode] as [s].[SortCode]=[bonzai].[resources].[Translations].[code] as [t].[code]))                                                                                             1           3           2           Nested Loops                   Left Outer Join                WHERE:([bonzai].[production].[Sorts].[SortCode] as [s].[SortCode]=[bonzai].[resources].[Translations].[code] as [t].[code])                                                                                                                                      NULL                                                                                                                                    4             0             1,672E-05     155         0,01830135       [s].[SortCode], [s].[SortName], [t].[Name]  NULL     PLAN_ROW                                                         0        1
4                    1                                |--Nested Loops(Left Semi Join, OUTER REFERENCES:([s].[SortCode]))                                                                                                                                                                                   1           4           3           Nested Loops                   Left Semi Join                 OUTER REFERENCES:([s].[SortCode])                                                                                                                                                                                                                                NULL                                                                                                                                    4             0             2,09E-05      89          0,01499511       [s].[SortCode], [s].[SortName]              NULL     PLAN_ROW                                                         0        1
5                    1                                |    |--Table Scan(OBJECT:([bonzai].[production].[Sorts] AS [s]))                                                                                                                                                                                    1           5           4           Table Scan                     Table Scan                     OBJECT:([bonzai].[production].[Sorts] AS [s])                                                                                                                                                                                                                    [s].[SortCode], [s].[SortName]                                                                                                          5             0,003865741   0,0001625     89          0,004028241      [s].[SortCode], [s].[SortName]              NULL     PLAN_ROW                                                         0        1
4                    5                                |    |--Index Seek(OBJECT:([bonzai].[production].[Products].[_dta_index_Products_9_5575058__K11_K2]), SEEK:([bonzai].[production].[Products].[DisplayInListFlag]='T' AND [bonzai].[production].[Products].[SortCode]=[bonzai].[production].[Sorts].[ 1           6           4           Index Seek                     Index Seek                     OBJECT:([bonzai].[production].[Products].[_dta_index_Products_9_5575058__K11_K2]), SEEK:([bonzai].[production].[Products].[DisplayInListFlag]='T' AND [bonzai].[production].[Products].[SortCode]=[bonzai].[production].[Sorts].[SortCode] as [s].[SortCode]) OR NULL                                                                                                                                    400           0,006828704   0,002357      9           0,01094597       NULL                                        NULL     PLAN_ROW                                                         0        5
0                    4                                |--Table Scan(OBJECT:([bonzai].[resources].[Translations] AS [t]), WHERE:([bonzai].[resources].[Translations].[CultureCode] as [t].[CultureCode]=[@CultureCode]))                                                                                    1           7           3           Table Scan                     Table Scan                     OBJECT:([bonzai].[resources].[Translations] AS [t]), WHERE:([bonzai].[resources].[Translations].[CultureCode] as [t].[CultureCode]=[@CultureCode])                                                                                                               [t].[code], [t].[Name]                                                                                                                  1             0,0032035     7,96E-05      83          0,0032864        [t].[code], [t].[Name]                      NULL     PLAN_ROW                                                         0        4

(7 row(s) affected)
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36357254
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВАРИАНТ МСУ
LINQ
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
            bonzaiDBDataContext db = new bonzaiDBDataContext();
            db.CommandTimeout = 60000;
            var quer = from s in db.Sorts
                       join t in db.Translations
                             on new { s.SortCode, CultureCode = "ru-ru" }
                         equals new { SortCode = t.Code, t.CultureCode } into t_join
                       from t in t_join.DefaultIfEmpty()
                       where
                           (from t0 in db.Products
                            where
                              t0.DisplayInListFlag == 'T'
                            group t0 by new
                            {
                                t0.SortCode
                            } into g
                            select new
                            {
                                g.Key.SortCode
                            }).Contains(new { s.SortCode })
                       select new
                       {
                           s.SortCode,
                           NAME = (t.Name ?? (s.SortName ?? string.Empty))
                       };
Сгенеренный и анализируемый T-SQL (выполнился в QA за 2 сек)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
exec sp_executesql N'SELECT [t0].[SortCode], COALESCE([t1].[Name],COALESCE([t0].[SortName],@p2)) AS [NAME]
FROM [production].[Sorts] AS [t0]
LEFT OUTER JOIN [resources].[Translations] AS [t1] ON ([t0].[SortCode] = [t1].[code]) AND (@p0 = [t1].[CultureCode])
WHERE EXISTS(
    SELECT NULL AS [EMPTY]
    FROM (
        SELECT [t2].[SortCode]
        FROM [production].[Products] AS [t2]
        WHERE UNICODE([t2].[DisplayInListFlag]) = @p1
        GROUP BY [t2].[SortCode]
        ) AS [t3]
    WHERE [t3].[SortCode] = [t0].[SortCode]
    )',N'@p0 varchar(5),@p1 int,@p2 nvarchar(4000)',@p0='ru-ru',@p1= 84 ,@p2=N''
SET STATISTICS PROFILE ON
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
SortCode NAME
-------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
HORIZAL  Tradicinės horizontalios aliuminės žaliuzės
ISOLITE  Horizontalios žaliuzės Isolite
VEGA     Kasetiniai roletai Vega
VERTIK   Vertikalios žaliuzės

(4 row(s) affected)

Rows                 Executes             StmtText                                                                                                                                                                                                                                                         StmtId      NodeId      Parent      PhysicalOp                     LogicalOp                      Argument                                                                                                                                                                                                                                                         DefinedValues                                                                                                                                                                                                                                                    EstimateRows  EstimateIO    EstimateCPU   AvgRowSize  TotalSubtreeCost OutputList                                     Warnings Type                                                             Parallel EstimateExecutions
-------------------- -------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------- ----------- ----------- ------------------------------ ------------------------------ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------- ------------- ------------- ----------- ---------------- ---------------------------------------------- -------- ---------------------------------------------------------------- -------- ------------------
4                    1                    SELECT [t0].[SortCode], COALESCE([t1].[Name],COALESCE([t0].[SortName],@p2)) AS [NAME]
FROM [production].[Sorts] AS [t0]
LEFT OUTER JOIN [resources].[Translations] AS [t1] ON ([t0].[SortCode] = [t1].[code]) AND (@p0 = [t1].[CultureCode])
WHERE EXISTS(
  1           1           0           NULL                           NULL                           NULL                                                                                                                                                                                                                                                             NULL                                                                                                                                                                                                                                                             4             NULL          NULL          NULL        0,02690512       NULL                                           NULL     SELECT                                                           0        NULL
0                    0                      |--Compute Scalar(DEFINE:([Expr1009]=CASE WHEN [bonzai].[resources].[Translations].[Name] as [t1].[Name] IS NOT NULL THEN [bonzai].[resources].[Translations].[Name] as [t1].[Name] ELSE CASE WHEN [bonzai].[production].[Sorts].[SortName] as [t0].[SortName] 1           2           1           Compute Scalar                 Compute Scalar                 DEFINE:([Expr1009]=CASE WHEN [bonzai].[resources].[Translations].[Name] as [t1].[Name] IS NOT NULL THEN [bonzai].[resources].[Translations].[Name] as [t1].[Name] ELSE CASE WHEN [bonzai].[production].[Sorts].[SortName] as [t0].[SortName] IS NOT NULL THEN [b [Expr1009]=CASE WHEN [bonzai].[resources].[Translations].[Name] as [t1].[Name] IS NOT NULL THEN [bonzai].[resources].[Translations].[Name] as [t1].[Name] ELSE CASE WHEN [bonzai].[production].[Sorts].[SortName] as [t0].[SortName] IS NOT NULL THEN [bonzai].[ 4             0             4E-07         4025        0,02690512       [t0].[SortCode], [Expr1009]                    NULL     PLAN_ROW                                                         0        1
4                    1                           |--Nested Loops(Left Outer Join, WHERE:([bonzai].[production].[Sorts].[SortCode] as [t0].[SortCode]=[bonzai].[resources].[Translations].[code] as [t1].[code]))                                                                                           1           3           2           Nested Loops                   Left Outer Join                WHERE:([bonzai].[production].[Sorts].[SortCode] as [t0].[SortCode]=[bonzai].[resources].[Translations].[code] as [t1].[code])                                                                                                                                    NULL                                                                                                                                                                                                                                                             4             0             1,672E-05     155         0,02690472       [t0].[SortCode], [t0].[SortName], [t1].[Name]  NULL     PLAN_ROW                                                         0        1
4                    1                                |--Nested Loops(Left Semi Join, OUTER REFERENCES:([t0].[SortCode]))                                                                                                                                                                                  1           4           3           Nested Loops                   Left Semi Join                 OUTER REFERENCES:([t0].[SortCode])                                                                                                                                                                                                                               NULL                                                                                                                                                                                                                                                             4             0             2,09E-05      89          0,02359848       [t0].[SortCode], [t0].[SortName]               NULL     PLAN_ROW                                                         0        1
5                    1                                |    |--Table Scan(OBJECT:([bonzai].[production].[Sorts] AS [t0]))                                                                                                                                                                                   1           5           4           Table Scan                     Table Scan                     OBJECT:([bonzai].[production].[Sorts] AS [t0])                                                                                                                                                                                                                   [t0].[SortCode], [t0].[SortName]                                                                                                                                                                                                                                 5             0,003865741   0,0001625     89          0,004028241      [t0].[SortCode], [t0].[SortName]               NULL     PLAN_ROW                                                         0        1
4                    5                                |    |--Top(TOP EXPRESSION:((1)))                                                                                                                                                                                                                    1           7           4           Top                            Top                            TOP EXPRESSION:((1))                                                                                                                                                                                                                                             NULL                                                                                                                                                                                                                                                             1             0             1E-07         9           0,01954884       NULL                                           NULL     PLAN_ROW                                                         0        5
4                    5                                |         |--Index Scan(OBJECT:([bonzai].[production].[Products].[_dta_index_Products_9_5575058__K11_K2] AS [t2]),  WHERE:([bonzai].[production].[Products].[SortCode] as [t2].[SortCode]=[bonzai].[production].[Sorts].[SortCode] as [t0].[SortCode 1           9           7           Index Scan                     Index Scan                     OBJECT:([bonzai].[production].[Products].[_dta_index_Products_9_5575058__K11_K2] AS [t2]),  WHERE:([bonzai].[production].[Products].[SortCode] as [t2].[SortCode]=[bonzai].[production].[Sorts].[SortCode] as [t0].[SortCode] AND unicode(CONVERT_IMPLICIT(nvarc NULL                                                                                                                                                                                                                                                             1             11,93275      6,170928      23          0,01859446       NULL                                           NULL     PLAN_ROW                                                         0        5
0                    4                                |--Table Scan(OBJECT:([bonzai].[resources].[Translations] AS [t1]), WHERE:([@p0]=[bonzai].[resources].[Translations].[CultureCode] as [t1].[CultureCode]))                                                                                           1           13          3           Table Scan                     Table Scan                     OBJECT:([bonzai].[resources].[Translations] AS [t1]), WHERE:([@p0]=[bonzai].[resources].[Translations].[CultureCode] as [t1].[CultureCode])                                                                                                                      [t1].[code], [t1].[Name]                                                                                                                                                                                                                                         1             0,0032035     7,96E-05      83          0,0032864        [t1].[code], [t1].[Name]                       NULL     PLAN_ROW                                                         0        4

(8 row(s) affected)
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36357256
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВАРИАНТ семки
LINQ
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
            bonzaiDBDataContext db = new bonzaiDBDataContext();
            db.CommandTimeout = 60000;
            var quer = (from s in db.Sorts
                        join t in db.Translations
                              on new { s.SortCode, CultureCode = "ru-ru" }
                          equals new { SortCode = t.Code, t.CultureCode } into t_join
                        from t in t_join.DefaultIfEmpty()
                        join p in db.Products on s.SortCode equals p.SortCode
                        where p.DisplayInListFlag == 'T'
                        select new
                        {
                            s.SortCode,
                            Name = (t.Name ?? (s.SortName ?? string.Empty))
                        }).Distinct();
Сгенеренный и анализируемый T-SQL (выполнился в QA за 13 сек)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
exec sp_executesql N'SELECT DISTINCT [t3].[SortCode], [t3].[value] AS [Name]
FROM (
    SELECT [t0].[SortCode], COALESCE([t1].[Name],COALESCE([t0].[SortName],@p1)) AS [value], [t2].[DisplayInListFlag]
    FROM [production].[Sorts] AS [t0]
    LEFT OUTER JOIN [resources].[Translations] AS [t1] ON ([t0].[SortCode] = [t1].[code]) AND (@p0 = [t1].[CultureCode])
    INNER JOIN [production].[Products] AS [t2] ON [t0].[SortCode] = [t2].[SortCode]
    ) AS [t3]
WHERE UNICODE([t3].[DisplayInListFlag]) = @p2',N'@p0 varchar(5),@p1 nvarchar(4000),@p2 int',@p0='ru-ru',@p1=N'',@p2= 84 
SET STATISTICS PROFILE ON
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
SortCode Name
-------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
HORIZAL  Tradicinės horizontalios aliuminės žaliuzės
ISOLITE  Horizontalios žaliuzės Isolite
VEGA     Kasetiniai roletai Vega
VERTIK   Vertikalios žaliuzės

(4 row(s) affected)

Rows                 Executes             StmtText                                                                                                                                                                                                                                                         StmtId      NodeId      Parent      PhysicalOp                     LogicalOp                      Argument                                                                                                                                                                                                                                                         DefinedValues                                                                                                                                                                                                                                                    EstimateRows  EstimateIO    EstimateCPU   AvgRowSize  TotalSubtreeCost OutputList                                     Warnings Type                                                             Parallel EstimateExecutions
-------------------- -------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------- ----------- ----------- ------------------------------ ------------------------------ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------- ------------- ------------- ----------- ---------------- ---------------------------------------------- -------- ---------------------------------------------------------------- -------- ------------------
4                    1                    SELECT DISTINCT [t3].[SortCode], [t3].[value] AS [Name]
FROM (
    SELECT [t0].[SortCode], COALESCE([t1].[Name],COALESCE([t0].[SortName],@p1)) AS [value], [t2].[DisplayInListFlag]
    FROM [production].[Sorts] AS [t0]
    LEFT OUTER JOIN [resources].[T 1           1           0           NULL                           NULL                           NULL                                                                                                                                                                                                                                                             NULL                                                                                                                                                                                                                                                             339,5119      NULL          NULL          NULL        19,32363         NULL                                           NULL     SELECT                                                           0        NULL
4                    1                      |--Parallelism(Gather Streams)                                                                                                                                                                                                                                 1           2           1           Parallelism                    Gather Streams                 NULL                                                                                                                                                                                                                                                             NULL                                                                                                                                                                                                                                                             339,5119      0             0,07591666    4025        19,32363         [t0].[SortCode], [Expr1008]                    NULL     PLAN_ROW                                                         1        1
4                    2                           |--Sort(DISTINCT ORDER BY:([t0].[SortCode] ASC, [Expr1008] ASC))                                                                                                                                                                                          1           3           2           Sort                           Distinct Sort                  DISTINCT ORDER BY:([t0].[SortCode] ASC, [Expr1008] ASC)                                                                                                                                                                                                          NULL                                                                                                                                                                                                                                                             339,5119      0,005630631   0,005034491   4025        19,24771         [t0].[SortCode], [Expr1008]                    NULL     PLAN_ROW                                                         1        1
8                    2                                |--Parallelism(Repartition Streams, Hash Partitioning, PARTITION COLUMNS:([t0].[SortCode], [Expr1008]))                                                                                                                                              1           4           3           Parallelism                    Repartition Streams            PARTITION COLUMNS:([t0].[SortCode], [Expr1008])                                                                                                                                                                                                                  NULL                                                                                                                                                                                                                                                             679,0239      0             0,1908696     4025        19,23705         [t0].[SortCode], [Expr1008]                    NULL     PLAN_ROW                                                         1        1
8                    2                                     |--Hash Match(Partial Aggregate, HASH:([t0].[SortCode], [Expr1008]), RESIDUAL:([bonzai].[production].[Sorts].[SortCode] as [t0].[SortCode] = [bonzai].[production].[Sorts].[SortCode] as [t0].[SortCode] AND [Expr1008] = [Expr1008]))          1           5           4           Hash Match                     Partial Aggregate              HASH:([t0].[SortCode], [Expr1008]), RESIDUAL:([bonzai].[production].[Sorts].[SortCode] as [t0].[SortCode] = [bonzai].[production].[Sorts].[SortCode] as [t0].[SortCode] AND [Expr1008] = [Expr1008])                                                             NULL                                                                                                                                                                                                                                                             679,0239      0             1,314339      4025        19,04618         [t0].[SortCode], [Expr1008]                    NULL     PLAN_ROW                                                         1        1
0                    0                                          |--Compute Scalar(DEFINE:([Expr1008]=CASE WHEN [bonzai].[resources].[Translations].[Name] as [t1].[Name] IS NOT NULL THEN [bonzai].[resources].[Translations].[Name] as [t1].[Name] ELSE CASE WHEN [bonzai].[production].[Sorts].[SortName 1           6           5           Compute Scalar                 Compute Scalar                 DEFINE:([Expr1008]=CASE WHEN [bonzai].[resources].[Translations].[Name] as [t1].[Name] IS NOT NULL THEN [bonzai].[resources].[Translations].[Name] as [t1].[Name] ELSE CASE WHEN [bonzai].[production].[Sorts].[SortName] as [t0].[SortName] IS NOT NULL THEN [b [Expr1008]=CASE WHEN [bonzai].[resources].[Translations].[Name] as [t1].[Name] IS NOT NULL THEN [bonzai].[resources].[Translations].[Name] as [t1].[Name] ELSE CASE WHEN [bonzai].[production].[Sorts].[SortName] as [t0].[SortName] IS NOT NULL THEN [bonzai].[ 115268,3      0             0,005763417   4025        17,73184         [t0].[SortCode], [Expr1008]                    NULL     PLAN_ROW                                                         1        1
5609792              2                                               |--Nested Loops(Left Outer Join, WHERE:([bonzai].[production].[Sorts].[SortCode] as [t0].[SortCode]=[bonzai].[resources].[Translations].[code] as [t1].[code]))                                                                       1           7           6           Nested Loops                   Left Outer Join                WHERE:([bonzai].[production].[Sorts].[SortCode] as [t0].[SortCode]=[bonzai].[resources].[Translations].[code] as [t1].[code])                                                                                                                                    NULL                                                                                                                                                                                                                                                             115268,3      0             0,2409108     82          17,72607         [t0].[SortCode], [t0].[SortName], [t1].[Name]  NULL     PLAN_ROW                                                         1        1
5609792              2                                                    |--Hash Match(Inner Join, HASH:([t0].[SortCode])=([t2].[SortCode]), RESIDUAL:([bonzai].[production].[Sorts].[SortCode] as [t0].[SortCode]=[bonzai].[production].[Products].[SortCode] as [t2].[SortCode]))                       1           8           7           Hash Match                     Inner Join                     HASH:([t0].[SortCode])=([t2].[SortCode]), RESIDUAL:([bonzai].[production].[Sorts].[SortCode] as [t0].[SortCode]=[bonzai].[production].[Products].[SortCode] as [t2].[SortCode])                                                                                  NULL                                                                                                                                                                                                                                                             115268,3      0             0,5875508     79          17,26517         [t0].[SortCode], [t0].[SortName]               NULL     PLAN_ROW                                                         1        1
10                   2                                                    |    |--Parallelism(Distribute Streams, Broadcast Partitioning)                                                                                                                                                                  1           9           8           Parallelism                    Distribute Streams             NULL                                                                                                                                                                                                                                                             NULL                                                                                                                                                                                                                                                             5             0             0,02853524    79          0,03256348       [t0].[SortCode], [t0].[SortName]               NULL     PLAN_ROW                                                         1        1
5                    1                                                    |    |    |--Table Scan(OBJECT:([bonzai].[production].[Sorts] AS [t0]))                                                                                                                                                          1           10          9           Table Scan                     Table Scan                     OBJECT:([bonzai].[production].[Sorts] AS [t0])                                                                                                                                                                                                                   [t0].[SortCode], [t0].[SortName]                                                                                                                                                                                                                                 5             0,003865741   0,0001625     79          0,004028241      [t0].[SortCode], [t0].[SortName]               NULL     PLAN_ROW                                                         0        1
5609792              2                                                    |    |--Index Scan(OBJECT:([bonzai].[production].[Products].[_dta_index_Products_9_5575058__K11_K2] AS [t2]),  WHERE:(unicode(CONVERT_IMPLICIT(nvarchar(1),[bonzai].[production].[Products].[DisplayInListFlag] as [t2].[Display 1           12          8           Index Scan                     Index Scan                     OBJECT:([bonzai].[production].[Products].[_dta_index_Products_9_5575058__K11_K2] AS [t2]),  WHERE:(unicode(CONVERT_IMPLICIT(nvarchar(1),[bonzai].[production].[Products].[DisplayInListFlag] as [t2].[DisplayInListFlag],0))=[@p2])                              [t2].[SortCode]                                                                                                                                                                                                                                                  115268,4      11,93275      3,085464      23          15,01822         [t2].[SortCode]                                NULL     PLAN_ROW                                                         1        1
0                    5609792                                              |--Table Scan(OBJECT:([bonzai].[resources].[Translations] AS [t1]), WHERE:([@p0]=[bonzai].[resources].[Translations].[CultureCode] as [t1].[CultureCode]))                                                                       1           15          7           Table Scan                     Table Scan                     OBJECT:([bonzai].[resources].[Translations] AS [t1]), WHERE:([@p0]=[bonzai].[resources].[Translations].[CultureCode] as [t1].[CultureCode])                                                                                                                      [t1].[code], [t1].[Name]                                                                                                                                                                                                                                         1             0,0032035     7,96E-05      20          0,1300772        [t1].[code], [t1].[Name]                       NULL     PLAN_ROW                                                         1        115268,3

(12 row(s) affected)
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36357317
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот, семячки опять облажались
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36357339
семки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful Calf,

13 секунд, подозрительно конечно, но ладно. сколько раз запускал?

настораживает:
Table Scan(OBJECT:([bonzai].[resources].[Translations] AS [t1]), WHERE:([@p0]=[bonzai].[resources].[Translations].[CultureCode] as [t1].[CultureCode]))

нет индекса на culturecode? сделай culturecode + code

индексы, судя по всему, за тебя профайлер делал :) он не всегда предлагает идеальные решения.

второй скан
|--Table Scan(OBJECT:([bonzai].[production].[Sorts] AS [t0]))

поля
[t0].[SortCode], [t0].[SortName] приаттач к индексу таблицы Sorts, чтобы не нужно было лазать за ними обратно в таблицу (приаттач != добавь как индексируемые)

приаттач поле DisplayInListFlag к индексу _dta_index_Products_9_5575058__K11_K2 таблицы Products


когда поправишь индексы запость время и планы ещё раз для сравнения
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36357341
семки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУНу вот, семячки опять облажались
ооо, вылезло.... весь день отмалчивалось. Слышь, МСУ, пиздеть команды не было, ты упал ниже плинтуса после вчерашнего разбора полетов.
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36357349
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
семкиупал ниже плинтуса после вчерашнего разбора полетов.
Ага, вот этот:

семячкизачем в контроле в списке скуль запросов справа нужен второй запрос? достаточно первого

просад не то, что ниже плинтуса, а вообще не канает на вменяемость

P.S. Если для пейджинга "достаточно первого" запроса, то я - Ваша бабушка, мистер ламо :)

P.S2. Особенно нравится вот такая схема:

семки ну так я же и предлагаю повесить сверху distinct, на первый взгляд должно прокатить?

:)

P.S. А вот это вообще цирк:

семкину так я же и предлагаю повесить сверху distinct, на первый взгляд должно прокатить ?

:)

Ржака-ржака
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36357359
семки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, а ты не знал, что такой кретинизм как твой не лечится? я че-то не припомню чтобы ты про свою буйную фантазию что-нибудь смог ответить. Вместо этого продолжаешь агонизированно фантазировать

семки[
МСУ
семкизачем в контроле в списке скуль запросов справа нужен второй запрос ? достаточно первого

То есть - речь о списке. В списке - их по-любому должно быть два. Ты же протупил что типа "одного запроса хватит" для пейджинга.

стоп стоп стоп, а вот слово "пейджинг" ты дописал сюда сам, признайся Ну и выше ты же написал, что "уходин один главный и 2 каунта", т.е. три запроса. Путаешься в показаниях? понятия не имею куда у тебя потерялся третий из лога, не экстрасенс, я тебя спрашивал исключительно про то, что в нем написано в запечатленный момент.

Ну что, Данилка, чуешь что не прав был, али ещё нет?
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36357369
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
семкиМСУ, а ты не знал, что такой кретинизм как твой не лечится? я че-то не припомню чтобы ты про свою буйную фантазию что-нибудь смог ответить. Вместо этого продолжаешь агонизированно фантазировать
Вот это:

семячки от бабки тонистоп стоп стоп, а вот слово "пейджинг" ты дописал сюда сам, признайся

ваще ржач :)

Да, про "пейджинг" вообще не было ни слова в ветке. Особенно если учитывать, что именно им топиккастер им и интересовался
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36357371
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чирфуль
Денис, ну так какую оценку ставите мне и семячкам за запросы? :)
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36357390
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>13 секунд, подозрительно конечно, но ладно. сколько раз запускал?
4

>>нет индекса на culturecode? сделай culturecode + code
там было только 4 записи, дабавил, но ничего не поменялось - результат тот же - 13 секунд

>>индексы, судя по всему, за тебя профайлер делал :) он не всегда предлагает идеальные решения.
ну да, профайлером. но условия конкурса то для всех одинаковые :)

>>[t0].[SortCode], [t0].[SortName] приаттач к индексу таблицы Sorts, чтобы не нужно было лазать
>>за ними обратно в таблицу (приаттач != добавь как индексируемые)
вообщето там тоже около 8 записей. приаттачил. стало еще хуже - 26 сек.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
SortCode Name
-------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
HORIZAL  Tradicinės horizontalios aliuminės žaliuzės
ISOLITE  Horizontalios žaliuzės Isolite
VEGA     Kasetiniai roletai Vega
VERTIK   Vertikalios žaliuzės

(4 row(s) affected)

Rows                 Executes             StmtText                                                                                                                                                                                                                                                         StmtId      NodeId      Parent      PhysicalOp                     LogicalOp                      Argument                                                                                                                                                                                                                                                         DefinedValues                                                                                                                                                                                                                                                    EstimateRows  EstimateIO    EstimateCPU   AvgRowSize  TotalSubtreeCost OutputList                                     Warnings Type                                                             Parallel EstimateExecutions
-------------------- -------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------- ----------- ----------- ------------------------------ ------------------------------ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------- ------------- ------------- ----------- ---------------- ---------------------------------------------- -------- ---------------------------------------------------------------- -------- ------------------
4                    1                    SELECT DISTINCT [t3].[SortCode], [t3].[value] AS [Name]
FROM (
    SELECT [t0].[SortCode], COALESCE([t1].[Name],COALESCE([t0].[SortName],@p1)) AS [value], [t2].[DisplayInListFlag]
    FROM [production].[Sorts] AS [t0]
    LEFT OUTER JOIN [resources].[T 1           1           0           NULL                           NULL                           NULL                                                                                                                                                                                                                                                             NULL                                                                                                                                                                                                                                                             339,5119      NULL          NULL          NULL        19,32363         NULL                                           NULL     SELECT                                                           0        NULL
4                    1                      |--Parallelism(Gather Streams)                                                                                                                                                                                                                                 1           2           1           Parallelism                    Gather Streams                 NULL                                                                                                                                                                                                                                                             NULL                                                                                                                                                                                                                                                             339,5119      0             0,07591666    4025        19,32363         [t0].[SortCode], [Expr1008]                    NULL     PLAN_ROW                                                         1        1
4                    2                           |--Sort(DISTINCT ORDER BY:([t0].[SortCode] ASC, [Expr1008] ASC))                                                                                                                                                                                          1           3           2           Sort                           Distinct Sort                  DISTINCT ORDER BY:([t0].[SortCode] ASC, [Expr1008] ASC)                                                                                                                                                                                                          NULL                                                                                                                                                                                                                                                             339,5119      0,005630631   0,005034491   4025        19,24771         [t0].[SortCode], [Expr1008]                    NULL     PLAN_ROW                                                         1        1
8                    2                                |--Parallelism(Repartition Streams, Hash Partitioning, PARTITION COLUMNS:([t0].[SortCode], [Expr1008]))                                                                                                                                              1           4           3           Parallelism                    Repartition Streams            PARTITION COLUMNS:([t0].[SortCode], [Expr1008])                                                                                                                                                                                                                  NULL                                                                                                                                                                                                                                                             679,0239      0             0,1908696     4025        19,23705         [t0].[SortCode], [Expr1008]                    NULL     PLAN_ROW                                                         1        1
8                    2                                     |--Hash Match(Partial Aggregate, HASH:([t0].[SortCode], [Expr1008]), RESIDUAL:([bonzai].[production].[Sorts].[SortCode] as [t0].[SortCode] = [bonzai].[production].[Sorts].[SortCode] as [t0].[SortCode] AND [Expr1008] = [Expr1008]))          1           5           4           Hash Match                     Partial Aggregate              HASH:([t0].[SortCode], [Expr1008]), RESIDUAL:([bonzai].[production].[Sorts].[SortCode] as [t0].[SortCode] = [bonzai].[production].[Sorts].[SortCode] as [t0].[SortCode] AND [Expr1008] = [Expr1008])                                                             NULL                                                                                                                                                                                                                                                             679,0239      0             1,314339      4025        19,04618         [t0].[SortCode], [Expr1008]                    NULL     PLAN_ROW                                                         1        1
0                    0                                          |--Compute Scalar(DEFINE:([Expr1008]=CASE WHEN [bonzai].[resources].[Translations].[Name] as [t1].[Name] IS NOT NULL THEN [bonzai].[resources].[Translations].[Name] as [t1].[Name] ELSE CASE WHEN [bonzai].[production].[Sorts].[SortName 1           6           5           Compute Scalar                 Compute Scalar                 DEFINE:([Expr1008]=CASE WHEN [bonzai].[resources].[Translations].[Name] as [t1].[Name] IS NOT NULL THEN [bonzai].[resources].[Translations].[Name] as [t1].[Name] ELSE CASE WHEN [bonzai].[production].[Sorts].[SortName] as [t0].[SortName] IS NOT NULL THEN [b [Expr1008]=CASE WHEN [bonzai].[resources].[Translations].[Name] as [t1].[Name] IS NOT NULL THEN [bonzai].[resources].[Translations].[Name] as [t1].[Name] ELSE CASE WHEN [bonzai].[production].[Sorts].[SortName] as [t0].[SortName] IS NOT NULL THEN [bonzai].[ 115268,3      0             0,005763417   4025        17,73184         [t0].[SortCode], [Expr1008]                    NULL     PLAN_ROW                                                         1        1
5609792              2                                               |--Nested Loops(Left Outer Join, WHERE:([bonzai].[production].[Sorts].[SortCode] as [t0].[SortCode]=[bonzai].[resources].[Translations].[code] as [t1].[code]))                                                                       1           7           6           Nested Loops                   Left Outer Join                WHERE:([bonzai].[production].[Sorts].[SortCode] as [t0].[SortCode]=[bonzai].[resources].[Translations].[code] as [t1].[code])                                                                                                                                    NULL                                                                                                                                                                                                                                                             115268,3      0             0,2409108     82          17,72607         [t0].[SortCode], [t0].[SortName], [t1].[Name]  NULL     PLAN_ROW                                                         1        1
5609792              2                                                    |--Hash Match(Inner Join, HASH:([t0].[SortCode])=([t2].[SortCode]), RESIDUAL:([bonzai].[production].[Sorts].[SortCode] as [t0].[SortCode]=[bonzai].[production].[Products].[SortCode] as [t2].[SortCode]))                       1           8           7           Hash Match                     Inner Join                     HASH:([t0].[SortCode])=([t2].[SortCode]), RESIDUAL:([bonzai].[production].[Sorts].[SortCode] as [t0].[SortCode]=[bonzai].[production].[Products].[SortCode] as [t2].[SortCode])                                                                                  NULL                                                                                                                                                                                                                                                             115268,3      0             0,5875508     79          17,26517         [t0].[SortCode], [t0].[SortName]               NULL     PLAN_ROW                                                         1        1
10                   2                                                    |    |--Parallelism(Distribute Streams, Broadcast Partitioning)                                                                                                                                                                  1           9           8           Parallelism                    Distribute Streams             NULL                                                                                                                                                                                                                                                             NULL                                                                                                                                                                                                                                                             5             0             0,02853524    79          0,03256348       [t0].[SortCode], [t0].[SortName]               NULL     PLAN_ROW                                                         1        1
5                    1                                                    |    |    |--Table Scan(OBJECT:([bonzai].[production].[Sorts] AS [t0]))                                                                                                                                                          1           10          9           Table Scan                     Table Scan                     OBJECT:([bonzai].[production].[Sorts] AS [t0])                                                                                                                                                                                                                   [t0].[SortCode], [t0].[SortName]                                                                                                                                                                                                                                 5             0,003865741   0,0001625     79          0,004028241      [t0].[SortCode], [t0].[SortName]               NULL     PLAN_ROW                                                         0        1
5609792              2                                                    |    |--Index Scan(OBJECT:([bonzai].[production].[Products].[_dta_index_Products_9_5575058__K11_K2] AS [t2]),  WHERE:(unicode(CONVERT_IMPLICIT(nvarchar(1),[bonzai].[production].[Products].[DisplayInListFlag] as [t2].[Display 1           12          8           Index Scan                     Index Scan                     OBJECT:([bonzai].[production].[Products].[_dta_index_Products_9_5575058__K11_K2] AS [t2]),  WHERE:(unicode(CONVERT_IMPLICIT(nvarchar(1),[bonzai].[production].[Products].[DisplayInListFlag] as [t2].[DisplayInListFlag],0))=[@p2])                              [t2].[SortCode]                                                                                                                                                                                                                                                  115268,4      11,93275      3,085464      23          15,01822         [t2].[SortCode]                                NULL     PLAN_ROW                                                         1        1
0                    5609792                                              |--Table Scan(OBJECT:([bonzai].[resources].[Translations] AS [t1]), WHERE:([@p0]=[bonzai].[resources].[Translations].[CultureCode] as [t1].[CultureCode]))                                                                       1           15          7           Table Scan                     Table Scan                     OBJECT:([bonzai].[resources].[Translations] AS [t1]), WHERE:([@p0]=[bonzai].[resources].[Translations].[CultureCode] as [t1].[CultureCode])                                                                                                                      [t1].[code], [t1].[Name]                                                                                                                                                                                                                                         1             0,0032035     7,96E-05      20          0,1300772        [t1].[code], [t1].[Name]                       NULL     PLAN_ROW                                                         1        115268,3

(12 row(s) affected)

>>приаттач поле DisplayInListFlag к индексу _dta_index_Products_9_5575058__K11_K2
>> таблицы Products
так ведь он и так там был:
Cheerful Calf
Код: plaintext
1.
2.
3.
4.
5.
CREATE NONCLUSTERED INDEX [_dta_index_Products_9_5575058__K11_K2] ON [production].[Products] 
(
	[DisplayInListFlag] ASC,
	[SortCode] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
GO


>>когда поправишь индексы запость время и планы ещё раз для сравнения
ну вот первыйничего не дал, а второй усугубил )
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36357400
семки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ
Да, про "пейджинг" вообще не было ни слова в ветке. Особенно если учитывать, что именно им топиккастер им и интересовался
только общались с тобой а не с топикстартером, и не на тему пейджинга а на тему накорябанного в твоем окошечке, ну так, чисто чтобы тебя подъебнуть на ошибке.

знаешь, почему с тобой неинтересно спорить? потому что ты не умеешь читать, что тебе пишут, опухшее ЧСВ не позволяет. Ты скучен, однообразен, дебиловат и задрочен форумом. Сочувствую тебе, Данилка, прощаю тебя
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36357413
семки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful Calf
там было только 4 записи, дабавил, но ничего не поменялось - результат тот же - 13 секунд

а, ну на 4х сканировать-то быстрее :) тогда понятно. Монитор не настолько широкий, чтобы охватить весь текстовый дамп статистики


Cheerful Calf
>>[t0].[SortCode], [t0].[SortName] приаттач к индексу таблицы Sorts, чтобы не нужно было лазать
>>за ними обратно в таблицу (приаттач != добавь как индексируемые)
вообщето там тоже около 8 записей. приаттачил. стало еще хуже - 26 сек.

да, когда записей мало это не имеет смысла, таблицу прошурстить быстрее.

Cheerful Calf
>>приаттач поле DisplayInListFlag к индексу _dta_index_Products_9_5575058__K11_K2
>> таблицы Products
так ведь он и так там был:

ага проглядел
Cheerful Calf
>>когда поправишь индексы запость время и планы ещё раз для сравнения
ну вот первыйничего не дал, а второй усугубил )
не ну норм, оставляй с группировкой, я просто прикинул что возможно линк ниасилит такое в скуль завернуть, поэтому рискнул предложить дистинкт, но раз смог то все хорошо.
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36357430
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
семкитолько общались с тобой а не с топикстартером, и не на тему пейджинга а на тему накорябанного в твоем окошечке, ну так, чисто чтобы тебя подъебнуть на ошибке.
А ошибки не было-то, сынко. Было 3 запроса (один лишний):
1. Count(*) - его в окошке не видно было, т.к. запись в экшен лог писалась ниже
2. Select - его мы видели
3. Count(*) from Select - это как-раз и был лишним запросом, он ничего плохого не делал, вот он:

Код: plaintext
gridPager.Render(totalRecords, result.Count());
Нужно туда было передать просто уже готовое значение кол-ва строк из result, но из-за отложенности дернулся заспрос. Но, резултат он выдал правильный. Просто сам запрос лишний по себе.

Так что, ошибки были разве что у Вас в голове, ламка :))

семкизнаешь, почему с тобой неинтересно спорить? потому что ты не умеешь читать, что тебе пишут
Знаешь, почему с тобой неинтересно спорить? Потому что ты не способен ни писать кода, ни мыслить, ни советовать. Просто колобок, который просто катится себе. Да, Сева?

семкиТы скучен, однообразен, дебиловат и задрочен форумом. Сочувствую тебе, Данилка, прощаю тебя
Все свои болячки пытаетесь наружу пнуть другим? Не надо, оставьте при себе
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36357433
семки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУРжака-ржака
ну как ребенок в детском саду, ей богу. Надавали по жопе, а у него включилась защитная реакция - истерично смеяться, прыгать вокруг и продолжать орать про свое, заткнув уши пальчиками и прикрикивать "а я тебя не слыышуу!!". Просто так, напоследок ассоциация проскочила :) да, таких деток обижать не стоит, их психика может только ухудшиться...
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36357436
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
семкиCheerful Calfтак ведь он и так там был:

ага проглядел
Признайтесь, не проглядели, а протупили
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36357446
семки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ
Код: plaintext
gridPager.Render(totalRecords, result.Count());
Нужно туда было передать просто уже готовое значение кол-ва строк из result, но из-за отложенности дернулся заспрос. Но, резултат он выдал правильный. Просто сам запрос лишний по себе.

дебилушка мой, я тебя именно про это и спросил, а потом ещё сам разжевал и в ротик тебе положил, не дошло?


МСУ
Знаешь, почему с тобой неинтересно спорить? Потому что ты не способен ни писать кода, ни мыслить, ни советовать. Просто колобок, который просто катится себе. Да, Сева?

фантазируешь, деточка? севы мерещятся? не он тебя по попке набил, не он неужели ещё не научился отличать кто тебе пишет? а код я тебе напишу когда у тебя вопрос умный возникнет, не раньше и не позже подумай пока, направь фантазию в нужное русло. Не способен? учись, до пенсии ещё далеко! или уже не очень, ась?
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36357771
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
семкидебилушка мой, я тебя именно про это и спросил, а потом ещё сам разжевал и в ротик тебе положил, не дошло?
Сынок, какой ротик?
Вот этот маниакально-депрессивный всплеск разума:
семеназачем в контроле в списке скуль запросов справа нужен второй запрос? достаточно первого
каким боком к пейджингу относится? ась? ))
Так как, достаточно первого?

семкипенсия
Рот на замок - и осмысливать вышесказанное :)
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36357874
семки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ
каким боком к пейджингу относится? ась? ))

вот именно что никак, когда до тебя дойдет уже, наконец.
Для тупых, краткое содержание для закрепления:


МСУвот как надо делать пейджинг! (показывает код и скриншот)

МСУа вот я улучшил! (показывает новый скриншот:)
[ грид с данными ][ лог запросов ]
(лог запросов, цитирую:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
-----
SELECT TOP( 50 ) RoleId, RoleName 
FROM aspnet_Roles
WHERE RoleName LIKE @p0
ORDER BY RoleName
-----
SELECT COUNT(*) FROM (
   SELECT TOP( 50 ) RoleId, RoleName 
   FROM aspnet_Roles
   WHERE RoleName LIKE @p0
   ORDER BY RoleName
) AS T
-----
)

семкиа зачем в логе нужен второй запрос? достаточно первого
МСУда это пейджинг!! ртфм!!

семкикакой пейджинг?
МСУэто пейджинг, нужно вначале считать каунт, потом селект!
нет, вначале селект, потом каунт!!
а вообще я проверил и, оказывается, неважно в каком порядке!!

семкикакой пейджинг из каунт от top 50?
МСУда каунт нужен! count(*) from ( select top 50 ) нужен для пейджинга, а ты не знал?!!

семкиты ибанулся?
МСУбла бла бла, пейджинг, блаблабла
семкиты дебил?
МСУпейджинг, блаблабла, сам дебил
далее идет непереводимая игра слов
МСУну да, у меня была вначале ошибка, где считалось число результатов, но это тут причем? тебе объяснить зачем нужен каунт для пейджинга?
семкиты дебил? причем тут пейджинг? я тебя про эту ошибку и спрашивал
МСУржака ржака, тебе объяснить зачем каунт в пейджинге?


МСУ, извини, я не знаю как общаться с такими невменяемыми дебилами, как ты
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36357888
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MCУ, я рад, что ты меня помнишь. За count(*) я бы тебя выпорол, за запрос в угол поставил.
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36358243
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
семкиМСУ, извини, я не знаю как общаться с такими невменяемыми дебилами, как ты
Вы не знаете, как общаться, потому что сами есть дибил

SeVaMCУ, я рад, что ты меня помнишь. За count(*) я бы тебя выпорол, за запрос в угол поставил.
Мозгами еще не обременены, чтобы в углы ставить.
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36358273
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проснулся,Данилка подмастерье. За полный count только на галеры(грести тебе можно доверять только, когда весло строго в одной дырке) и плетью почаще(дурь и спесь выбивать).
Это только для пионерских баз и заведений, где ты штаны протираешь. С такими запросами никакое железо не спасет.
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36358360
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaПроснулся,Данилка подмастерье. За полный count только на галеры(грести тебе можно доверять только, когда весло строго в одной дырке) и плетью почаще(дурь и спесь выбивать).
Это только для пионерских баз и заведений, где ты штаны протираешь. С такими запросами никакое железо не спасет.

Сынок, LinqDataSource, который работает точно так же (Count(*) и Select Paging) - тоже в топку? Разработчиков казнить?

Тестировал на миллионе записей свой пейджинг - летает как птица.

Фильтр + Пейджинг = Удобство и скорость

Как был дятлом, Сева, там им и остаешься

P.S. Пипец, сколько от Вас нового узнать можно. Теперь и пейджинг - это зло
...
Рейтинг: 0 / 0
25 сообщений из 127, страница 2 из 6
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как это сказать по линкувски? (left outer join по двум полям)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]