powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как это сказать по линкувски? (left outer join по двум полям)
127 сообщений из 127, показаны все 6 страниц
Как это сказать по линкувски? (left outer join по двум полям)
    #36352929
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
select p.ProductID,
       isnull(t.Name, isnull(p.Productname, N'')) AS Name
from   Products p
       left outer join Translations t
            on  p.ProductID = t.ObjectID
            and t.Culture = @Culture
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36352945
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень по-дурацки... мне не понравилось, ну и гадость ваша заливная рыба ваш линку :)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
                string Culture = "ru-ru";
                var rusys = from p in db.Product
                            join t in db.Translation
                                on new { f1 = p.ProductID, f2 = Culture }
                                equals new { f1 = t.ObjectID, f2 = t.Culture } into t
                            from x in t.DefaultIfEmpty()
                            select new Rūšis
                            {
                                ProductID = p.ProductID,
                                Name = x.Name != null ? x.Name : p.Productname
                            };
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36354634
Фотография 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.
24.
25.
26.
27.
28.
CREATE TABLE dbo.Products(
	ProductID int IDENTITY( 1 , 1 ) NOT NULL,
	SortCode nvarchar( 8 ) NOT NULL,
	DisplayInListFlag char( 1 ) NOT NULL
 CONSTRAINT PK_Products PRIMARY KEY CLUSTERED (ProductID ASC))
GO

CREATE TABLE dbo.Sorts(
	SortCode nvarchar( 8 ) NOT NULL,
	SortName nvarchar( 64 ) NOT NULL
 CONSTRAINT PK_Sorts PRIMARY KEY CLUSTERED (SortCode ASC))
GO

CREATE TABLE dbo.Translations(
	CultureCode char( 5 ) NOT NULL,
	Code nvarchar( 8 ) NOT NULL,
	Name nvarchar( 64 ) NOT NULL
 CONSTRAINT PK_Translations PRIMARY KEY CLUSTERED (CultureCode ASC, Code ASC))
 GO

insert into dbo.Sorts (SortCode, SortName) values ('t', 'tables')
insert into dbo.Sorts (SortCode, SortName) values ('c', 'computers')
insert into dbo.Sorts (SortCode, SortName) values ('b', 'beverages')

insert into dbo.Products (SortCode, DisplayInListFlag) values ('c','Y')
insert into dbo.Products (SortCode, DisplayInListFlag) values ('c','N')
insert into dbo.Products (SortCode, DisplayInListFlag) values ('t','N')

insert into dbo.Translations (CultureCode, Code, Name) values ('ru-ru', 'c', N'Компьютеры')

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
declare @CultureCode char( 5 ) set @CultureCode = 'ru-ru'
select s.SortCode, 
       isnull(t.Name, isnull(s.SortName, N'')) as Name
from dbo.Sorts s
     left outer join dbo.Translations t
	on s.SortCode = t.Code
	and t.CultureCode = @CultureCode
where (s.SortCode in (select SortCode from dbo.Products
			where (DisplayInListFlag = 'Y')
			group by SortCode))

простую выборку сделал как и написал выше, а where кудой и как вставлять?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
public IEnumerable<Sort> CategoryList
{
    get
    {
        bonzaiDBDataContext db = new bonzaiDBDataContext();
        return from s in db.Sorts
               join t in db.Translations
               on new { f1 = s.SortCode, f2 = m_CultureCode }
               equals new { f1 = t.Code, f2 = t.CultureCode } into l
               from x in l.DefaultIfEmpty() 
               select new Sort
               {
                   Code = s.SortCode,
                   Name = x.Name != null ? x.Name : s.SortName,
               };
    }
}
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36354758
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЧирфСкрипт
Денис, вот это профессионально. Респект! :)

Чтобы что-то начать делать на линке, попробуйте оптимизировать/упростить запрос:

Код: plaintext
1.
2.
3.
4.
5.
SELECT s.SortCode,
       ISNULL(t.Name, ISNULL(s.SortName, '')) AS [Name]
FROM   dbo.Sorts s
       LEFT OUTER JOIN dbo.Translations t ON  s.SortCode = t.Code AND t.CultureCode = 'ru-ru'
	   JOIN dbo.Products p ON s.SortCode = p.SortCode
WHERE p.DisplayInListFlag = 'Y' 

Тогда LINQ-запрос будет таким:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
var res = 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 == 'Y'
          select new
          {
              s.SortCode,
              Name = (t.Name ?? (s.SortName ?? string.Empty))
          };

Сам линк сгенерит вот такой запрос:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SELECT [t0].[SortCode],
       COALESCE([t1].[Name], COALESCE([t0].[SortName], @p2)) AS [Name]
FROM   [dbo].[Sorts] AS [t0]
       LEFT OUTER JOIN [dbo].[Translations] AS [t1]
            ON  ([t0].[SortCode] = [t1].[code])
            AND (@p0 = [t1].[CultureCode])
       INNER JOIN [dbo].[Products] AS [t2]
            ON  [t0].[SortCode] = [t2].[SortCode]
WHERE  UNICODE([t2].[DisplayInListFlag]) = @p1
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36354818
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри, не увидел группировку :)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
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 == "Y"
	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))
}
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36354831
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо огромное!!!
угук ;) такому проффессионалу как Вы такие опечатки непростительны
МСУ
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
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 == "Y"
	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))
}
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36354839
семки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, и что, скуль запрос все ещё генерится целиком?

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

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

Денис, группировка тут не нужна, возьми первое предложение Данилки с джойном и навесь на результат distinct

Cheerful Calf
объясните этому студенту, что просто джойн не пойдет, т.к. он размножит записи в основном наборе :)

Пипец, даже тут щас семки буду учить писать скрипты
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36354868
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Distinct - это жесть. План выполнения потом посмотрите после distinct'а :)
Distinct - без причины на то - это зло.
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36354872
семки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful Calfв продуктах сорты повторяются, не подходит так
ну так я же и предлагаю повесить сверху distinct, на первый взгляд должно прокатить?
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36354878
семки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУDistinct - это жесть. План выполнения потом посмотрите после distinct'а :)
Distinct - без причины на то - это зло.
скуль-то выдай вот этого

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
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 == "Y"
	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))
}
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36354890
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
семкискуль-то выдай вот этого
А по-русски?
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36354896
семки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

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

запрос, который генерит LINQ

Да примерно такой же запрос и генерит, даже чутка пооптимальней. Вполне съедобно. И уж однозначно лучше, чем дистинкт основного набора данных.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SELECT [t0].[SortCode],
       COALESCE([t1].[Name], COALESCE([t0].[SortName], @p2)) AS [NAME]
FROM   [dbo].[Sorts] AS [t0]
       LEFT OUTER JOIN [dbo].[Translations] AS [t1]
            ON  ([t0].[SortCode] = [t1].[code])
            AND (@p0 = [t1].[CultureCode])
WHERE  EXISTS(
           SELECT NULL AS [EMPTY]
           FROM   (
                      SELECT [t2].[SortCode]
                      FROM   [dbo].[Products] AS [t2]
                      WHERE  UNICODE([t2].[DisplayInListFlag]) = @p1
                      GROUP BY
                             [t2].[SortCode]
                  ) AS [t3]
           WHERE  [t3].[SortCode] = [t0].[SortCode]
       )
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36354913
семки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful Calfобязуюсь провести тестирование на больших количествах данных))) тока напиши как с дистинктом в линку )

на память вроде так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
var res = (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 == 'Y'
          select new
          {
              s.SortCode,
              Name = (t.Name ?? (s.SortName ?? string.Empty))
          }).Distinct();
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36354924
семки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУсемкиМСУ,

запрос, который генерит LINQ

Да примерно такой же запрос и генерит, даже чутка пооптимальней. Вполне съедобно. И уж однозначно лучше, чем дистинкт основного набора данных.

а если теперь зааттачить планы выполнения того и другого? уж извини что отвлекаю, строгать локальную базу как-то неохота :)

и, кстати, все-таки, а что сгенерит LINQ на эти два? :)
Код: plaintext
1.
2.
grid.DataSource = result; 
gridPager.Render(totalRecords, result.Count());
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36354950
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
семкиа если теперь зааттачить планы выполнения того и другого? уж извини что отвлекаю, строгать локальную базу как-то неохота :)
Лень. Я сто процентов знаю, что дистинкт будет хуже. Не верите - пробуйте сами. Зачем мне опять что-то кому-то доказывать.

семкии, кстати, все-таки, а что сгенерит LINQ на эти два? :)
Я уже говорил:



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



Во-вторых, слейте сорцы и проверьте сами. Очень похоже на подходы Севы - никогда не юзает своё, только всё стреляет код, тесты, планы и так далее.
ты мне врешь,

Код: plaintext
1.
grid.DataSource = result; 
gridPager.Render(totalRecords, result.Count());
выдаст другую картинку, на которую ты ссылался в прошлый раз. Почему - я уже неоднократно предлагал подумать.
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36354967
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT s.SortCode,
       ISNULL(t.Name, ISNULL(s.SortName, N'')) AS NAME
FROM   dbo.Sorts s
       LEFT OUTER JOIN dbo.Translations t
            ON  s.SortCode = t.Code
            AND t.CultureCode = 'ru-ru'
WHERE  (
           s.SortCode IN (SELECT SortCode
                          FROM   dbo.Products
                          WHERE  (DisplayInListFlag = 'Y')
                          GROUP BY
                                 SortCode)
       )

А вообще, Денису, по-хорошему, тоже двойку за структуру нужно ставить.

Код: plaintext
CultureCode = 'ru-ru'
Нужно выносить в отдельный классификатор культур. И джойниться не по строкам, а по кластерным индексам.

Код: plaintext
DisplayInListFlag = 'Y'
Про тип BIT не нужно забывать. Если типов планируется более двух, берем просто tinyint.
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36354983
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
семкиты мне врешь
Атец, вот код. Сорцы на месте. От него нужно плясать:

Код: 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.
using (ClassesDataContext db = new ClassesDataContext())
{
    //Get SQL                    
    sql.Text = string.Empty;
    context.Log = new ActionTextWriter(s => sql.Text += s);

    // Готовим запрос на Count(*) и выполняем
    var query = string.IsNullOrEmpty(tbRoleName.Text) ?
        context.aspnet_Roles :
        context.aspnet_Roles.Where(d => d.RoleName.StartsWith(tbRoleName.Text));
    int totalRecords = query.Count();

    // Готовим запрос, но не выполняем
    var result = query.OrderBy(d => d.RoleName)
        .Skip(gridPager.PageIndex * gridPager.PageSize)
        .Take(gridPager.PageSize);

    grid.DataSource = null;
    int currentRecords = 0;

    if (totalRecords > 0)
    {
        var list = result.ToList();
        grid.DataSource = list;
        currentRecords = list.Count;

    }

    gridPager.Render(totalRecords, currentRecords);
}

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


Во-вторых, я неоднократно уже говорил - отперестановки мест слагаемых...
То бишь - без разницы, какой из запросов выполняется первым. Почему - я уже говорил.
да ты нереально трудный. Выкинь этот код, он появился позже, тут ошибок нет поэтому ты и тупишь, либо ты втихую его исправил и продолжаешь косить под дурочку.
Возьми исходный код, относительно которого я начал тебе писать. Он содержит две строчки:

grid.DataSource = result ;
gridPager.Render(totalRecords, result.Count() );


result имеет тип IQueryable. И выполняется он у тебя ДВА раза
первый раз - биндится грид, читает содержимое с сервера.
второй раз - считается количество элементов, которое забиндилось в грид, но оба-на, оно тоже считается на сервере .

Итого на сервер уходит 2 (ДВА) одинаковых запроса:
1) select top 50
2) select count(*) from (select top 50)

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

grid.DataSource = result;
gridPager.Render(totalRecords, result.Count());

Вовсе не так. Это ты нереально трудный - выкинь этот код и смотри в сорцы, это код в самом начале где-то светанулся, так как писан был от руки. Не доходит?


семкиresult имеет тип IQueryable. И выполняется он у тебя ДВА раза
первый раз - биндится грид, читает содержимое с сервера.
второй раз - считается количество элементов, которое забиндилось в грид, но оба-на, оно тоже считается на сервере.

В том первом коде два раза проскочил серверный каунт - и хрен бы с ним. И что, это как-то отразилось на сорце?

семкиИтого на сервер уходит 2 (ДВА) одинаковых запроса:
1) select top 50
2) select count(*) from (select top 50)

На сервер уходт один главный запрос и 2 каунта. Ну и чего дальше-то?

семкия тебя и спросил, начерта тебе нужен второй, если достаточно первого? ну ты конечно тихонько это подправил, но в дебила играл долго и усердно. Достаточно понятно разжевал?
Нифига подобного. Сначала ты сам облажался, а потом начал искать, к чему бы якорь закинуть. Начал дегенеративно косить под тупика. Читаем:

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

То есть - речь о списке. В списке - их по-любому должно быть два. Ты же протупил что типа "одного запроса хватит" для пейджинга. Потом начал реально под оленя косить, типа "пейджинг тут причем", "порядок запросов" и так далее - уводя от сути твоей тупости.
Но меня так не проведешь - тупость-то она налицо.
Тут ты реально опростоволосился. Ибо в списке должно быть ДВА запроса. Одного - недостаточно. Не переваливай в больной головы на здоровую.

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

от руки? че-та я сомневаюсь
http://www.sql.ru/forum/actualthread.aspx?tid=717843&pg=1#8026941
прямо так вижу как ты от руки фигаришь его в студии, а потом от руки рисуешь скриншоты в пейнте того, как этот код отработал ну-ну, придержи свои байки для кого-нибудь другого. Такая же фигня у тебя в первом же скриншоте, относящемся к посту по этой ссылке. Вывод - бага была изначально там. Заметь, к ней же я и задал свой вопрос.

МСУВ том первом коде два раза проскочил серверный каунт - и хрен бы с ним. И что, это как-то отразилось на сорце?

я понятия не имею что и как там у тебя отражается. Если ты не врубаешься, что count(*) от select top 50 не вернет тебе общего количества элементов , которое нужно для пейджинга (который ты сразу же зачем-то приплел, хотя вопрос был не про него), то про какие знания скуля ты нам тут всем втираешь?


МСУ
На сервер уходт один главный запрос и 2 каунта. Ну и чего дальше-то?

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

МСУ
Нифига подобного. Сначала ты сам облажался, а потом начал искать, к чему бы якорь закинуть. Начал дегенеративно косить под тупика. Читаем:

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

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

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

Ну что, Данилка, чуешь что не прав был, али ещё нет?
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (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
Как это сказать по линкувски? (left outer join по двум полям)
    #36358399
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУSeVaПроснулся,Данилка подмастерье. За полный count только на галеры(грести тебе можно доверять только, когда весло строго в одной дырке) и плетью почаще(дурь и спесь выбивать).
Это только для пионерских баз и заведений, где ты штаны протираешь. С такими запросами никакое железо не спасет.

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

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

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

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

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

SeVaПейджинг - штука нужна, но только не в шаловливых ручонках

Ага:

SeVaЗа полный count только на галеры


Ну-ка, пейджинг без Count(*) - в студию. Ась?
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36358524
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А своим скудным слабо, "практик"? Этот тривиальный рецепт всем известен кроме тебя. Хамам, я морды бью, а не учу их уму, разуму, тем более, что это уже не поможет. Только санитары, смерительная рубашка и уколы.
Давай, прояви свой недюженный, а то может и лоботамия не нужна за отсутствием серого вещества.
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36358559
Фотография gds
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бл* ну и багадельня. Модератор кажись пока прикрыть топик пока они в лахмотья монитор не порвали.
А Вас МСУ я не понимаю. Вы даказали что ваш код будет работать быстрее и он лучше. Тема, то как звучит не помните (это ко всем). Что вы тут хрень всякую разводите. не обращайте внимание поарут, погоречатся и отойду. Вы же, МСУ, уже столько тут дельных советов дали... я бы игнорировал таких собеседников. Да еще и не по теме высказываются.
Её богу Троль ландия какая то.
Одна из основных проблем человека - проблема выбора.
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36358560
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaА своим скудным слабо, "практик"?
Дык я ж написал уже. Так Вы напишите лучше или снова - сто двадцать первый слив и детские отмазки типа "Я пишу код за деньги"?

SeVaЭтот тривиальный рецепт всем известен кроме тебя.
Это всё хорошо, но где код?

SeVaХамам, я морды бью, а не учу их уму, разуму, тем более, что это уже не поможет.
Ууу, как всё банально. Вы не меняетесь, милок... Как я понимаю, "более правильного" решения не будет?

SeVaДавай, прояви свой недюженный, а то может и лоботамия не нужна за отсутствием серого вещества.
Гав
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36358567
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gdsА Вас МСУ я не понимаю. Вы даказали что ваш код будет работать быстрее и он лучше. Тема, то как звучит не помните (это ко всем). Что вы тут хрень всякую разводите. не обращайте внимание поарут, погоречатся и отойду. Вы же, МСУ, уже столько тут дельных советов дали... я бы игнорировал таких собеседников. Да еще и не по теме высказываются.
Согласен с Вами, gds ... Ухожу :)
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36358645
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУgdsА Вас МСУ я не понимаю. Вы даказали что ваш код будет работать быстрее и он лучше. Тема, то как звучит не помните (это ко всем). Что вы тут хрень всякую разводите. не обращайте внимание поарут, погоречатся и отойду. Вы же, МСУ, уже столько тут дельных советов дали... я бы игнорировал таких собеседников. Да еще и не по теме высказываются.
Согласен с Вами, gds ... Ухожу :)
Gds, запросов с полными сканами почти лимона записей быть не должно никогда. Иначе, если пользователей будет не три калеки, база ляжет или будут мертвые блокировки.
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36358682
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa,

Не совсем понятен смылс вашего участия в этом топике. Вернее понятен, но всё-таки хотелось быть о Вас лучшего мнения. Пока что кроме пустозвонства и неординарных фантазий на тему гребли галер веслами (интересно, с чего бы это, надо перечитать Фрейда, а то Ваша психология не до конца понятна) от Вас ничего не вышло. Тема пейджинга, на мой взгляд актуальна. Тема оптимального, лёгкого. быстрого пейджинга - тем более. Вы можете привести пример хорошей и граммотной реализации?
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36358693
Фотография gds
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaзапросов с полными сканами почти лимона записей быть не должно никогда.
Что то подобное нам втирали на первом курсе по БД, когда я учился в институте. Ну неужели, Вы, SeVa, думаете что об этом знаете только вы.
А знаете как езще бывает. Придут на работу с утра операционисты и бухгалтера, человек 60. включат комп. Запустят прогу всключат фильтр по платежкам/переводам и забудут выставить диапазаны, или слетят. И вот тогда то и начинается самое интересное (выдача всех документов за 10 лет). Типо у меня комп сломался. Программы не работают. и т.д. 5-7 минут подумает переварит и выдаст инфу. На своей практике у меня такое чут ли не каждый день.
По сабжу и (вроде по вопросу) да надо выбирать минимальный набор. Но и надо быть готовым к тому, что какой нить идиот захочет получить весь список. так что бы было. или интересно полистать.

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

SeVaGds, запросов с полными сканами почти лимона записей быть не должно никогда . Иначе, если пользователей будет не три калеки, база ляжет или будут мертвые блокировки.
Ты реально такой дибил, да?

Код: plaintext
1.
SELECT COUNT(*) AS [value]
FROM   [dbo].[aspnet_Roles] AS [t0]

1. Stream Aggregate (Aggregate): Цена 4%
2. Index Scan: Цена 96%

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SELECT [t1].[ApplicationId],
       [t1].[RoleId],
       [t1].[RoleName],
       [t1].[LoweredRoleName],
       [t1].[Description],
       [t1].[code]
FROM   (
           SELECT ROW_NUMBER() OVER(ORDER BY [t0].[RoleName]) AS [ROW_NUMBER],
                  [t0].[ApplicationId],
                  [t0].[RoleId],
                  [t0].[RoleName],
                  [t0].[LoweredRoleName],
                  [t0].[Description],
                  [t0].[code]
           FROM   [dbo].[aspnet_Roles] AS [t0]
       ) AS [t1]
WHERE  [t1].[ROW_NUMBER] BETWEEN  10  AND  20 
ORDER BY [t1].[ROW_NUMBER]

1. Sort: Цена 100 %
2. Clustered Index Scan: Цена 0%

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

Там топик и называется, собственно, "Извлечение данных по мере надобности"

Вот тут я приводил примеры под Linq2SQL/EF и NHibernate, для выдирания страницы (Page) данных с сервера.
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36358725
Фотография gds
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУВот тут я приводил примеры под Linq2SQL/EF и NHibernate, для выдирания страницы (Page) данных с сервера.
Еще раз спасибо и за ссылку тоже по Linq как раз то что надо. Помню этот топик просматривал, но чесно говоря не придал тогда особого внимания.
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36358742
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gdsМСУВот тут я приводил примеры под Linq2SQL/EF и NHibernate, для выдирания страницы (Page) данных с сервера.
Еще раз спасибо и за ссылку тоже по Linq как раз то что надо. Помню этот топик просматривал, но чесно говоря не придал тогда особого внимания.

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

Не совсем понятен смылс вашего участия в этом топике. Вернее понятен, но всё-таки хотелось быть о Вас лучшего мнения. Пока что кроме пустозвонства и неординарных фантазий на тему гребли галер веслами (интересно, с чего бы это, надо перечитать Фрейда, а то Ваша психология не до конца понятна) от Вас ничего не вышло. Тема пейджинга, на мой взгляд актуальна. Тема оптимального, лёгкого. быстрого пейджинга - тем более. Вы можете привести пример хорошей и граммотной реализации?
gds, позволю себе еще один совет, не нужно становится в позу и брать пример с хамов типа МСУ.
Если для запроса, который возращает 4 записи нужно просканировать таблицу в 5 лимонов, то нужно менять структуру или разбираться так ли он нужен. Простых и быстрых пейджингов на сложных выборках не бывает, посему если селективность маленькая, то нужно ограничивать кол-во топом и выводить соответсвующее предупреждение. Все равно никто не будет просматривать даже сотню записей.Иначе все умрет, чудес не бывает. Помимо снижения производительности будет возрастать вероятность мертвых блокировок. Ты в курсе, что простой селект и update по индексному полю может ее вызвать?
ЗЫ Индексы на маленьких таблицах лучше не ставить, будут только лишние тормоза.В некоторых случаях даже на таблицах до 256К.
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36358854
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVagds, позволю себе еще один совет, не нужно становится в позу и брать пример с хамов типа МСУ.
Это не пример кода, насколько я понимаю

SeVaЕсли для запроса, который возращает 4 записи нужно просканировать таблицу в 5 лимонов, то нужно менять структуру или разбираться так ли он нужен.
Ты реально тупой... 5 млн. записей - нужно менять структуру? Упал со стула
Ты вообще представляешь себе объемы данных в биллинговых системах?
Срочно читать про секционировние таблиц, дуралей )
Но всего-лишь для 5 миллионов записей секционирование не применяют. Это очень мало. Понимаю, если еще речь о ста миллионах.
Теперь мы все знаем, с какими студенческими табличками из тыщи записей Вы работаете :)

SeVaИначе все умрет, чудес не бывает.
Умереть можешь только ты, ничего не смыслящий в базах данных и в планах выполнения запросов :)

SeVaПомимо снижения производительности будет возрастать вероятность мертвых блокировок.
Грязное чтение юзай, клоун :)

SeVaТы в курсе, что простой селект и update по индексному полю может ее вызвать?
Открыл америку.

P.S. Сева, Вам не только я уже говорил - прример "грамотного" пейджинга будет?
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36358878
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaПростых и быстрых пейджингов на сложных выборках не бываетТо есть Вы вообще против пейджинга?
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36358890
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУSeVagds, позволю себе еще один совет, не нужно становится в позу и брать пример с хамов типа МСУ.
Это не пример кода, насколько я понимаю

SeVaЕсли для запроса, который возращает 4 записи нужно просканировать таблицу в 5 лимонов, то нужно менять структуру или разбираться так ли он нужен.
Ты реально тупой... 5 млн. записей - нужно менять структуру? Упал со стула
Ты вообще представляешь себе объемы данных в биллинговых системах?
Срочно читать про секционировние таблиц, дуралей )
Но всего-лишь для 5 миллионов записей секционирование не применяют. Это очень мало. Понимаю, если еще речь о ста миллионах.
Теперь мы все знаем, с какими студенческими табличками из тыщи записей Вы работаете :)

SeVaИначе все умрет, чудес не бывает.
Умереть можешь только ты, ничего не смыслящий в базах данных и в планах выполнения запросов :)

SeVaПомимо снижения производительности будет возрастать вероятность мертвых блокировок.
Грязное чтение юзай, клоун :)

SeVaТы в курсе, что простой селект и update по индексному полю может ее вызвать?
Открыл америку.

P.S. Сева, Вам не только я уже говорил - прример "грамотного" пейджинга будет?
MCУ, в отличии от тебя, я прекрасно знаю, что такое биллинговые системы. Уверяю тебя, таких как ты туда бы и близко не подпустили.
Грязное чтение - грязные данные, первый признак кривизны решения, но для палаты №6 сойдет.
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36358899
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful CalfSeVa,

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

SeVaГрязное чтение - грязные данные, первый признак кривизны решения, но для палаты №6 сойдет.
Да ладно? Идите расскажите это на MS SQL Server форуме
Ты реально неудачник. Тебя в детстве били, да?

Коллеги! Оказывется, уровень изолированности транзакций "грязное" чтение - это зло

Специально для тебя (мне больше не о чем говорить с пустозвоном) и в последний раз - грязное чтение - замечательный инструмент для наборов данных под отчеты, чтобы не просаживать сервер.
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36358938
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful CalfSeVaПростых и быстрых пейджингов на сложных выборках не бываетТо есть Вы вообще против пейджинга?
Если можно обойтись без него, то да.Представь себе ситуацию из одного проекта.
Порядка 30К предприятий, у них около 70К заводов и параходов, умножь это на несколько десятков пользователей.Основной запрос - выборка из таблиц иградиентов -продуктов других фирм (по 2000К в каждой) с джойном еще дюжины таблиц, если не делать ограничений на кол-во возращаемых записей (пользователи ребята ленивые и не будут напрягаться), никакое секционирование не поможет, база будет лежать пластом. Какой смысл показывать милионы? Они их все равно не будут смотреть. Постраничная выборка была, но ставилось ограничение на 200 записей и все работало с нормальной скоростью. Хочешь найти, потрудись задать нормальные условия. Свои продукты они могли просматривать полностью, но это уже совсем другие объемы. Полных сканов на таких таблицах быть не должно.
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36358966
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaПейджинг - штука нужна
SeVaЕсли можно обойтись без него, то да.
Тогда не понятно в каких случая он "штука нужная" ?
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36358967
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaПорядка 30К предприятий, у них около 70К заводов и параходов, умножь это на несколько десятков пользователей.Основной запрос - выборка из таблиц иградиентов -продуктов других фирм (по 2000К в каждой) с джойном еще дюжины таблиц, если не делать ограничений на кол-во возращаемых записей (пользователи ребята ленивые и не будут напрягаться), никакое секционирование не поможет, база будет лежать пластом.
И что, под 30К предприятий и 70К заводов используется одна БД? Аааааа, мочить дебила Севу
Слетел со стула

Да там репликация должны быть между всеми звеньями. Паблишер, дестрибьютер и подписчик - классика репликации. Курите хоть транзакционную реплику, хоть мерж, хоть репликацию снимков.

А, я ж забыл. Сева даже не знает, что такое репликация

SeVaКакой смысл показывать милионы?
Для дятлов - пейджинг не показывает миллионы. Он показывает страницу (например, из 50 записейц)

Всё, дальнейший бред дятла Севы я не могу читать. Да, под 30К предприятий и 70К заводов используется одна БД и все щимятся в одну таблицу продуктов. Ухахаха
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36358970
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Compositumдалеко => давно
Оговорка прям по Фрейду.Не только от форума далеко.
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36358972
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful CalfSeVaПейджинг - штука нужна
SeVaЕсли можно обойтись без него, то да.
Тогда не понятно в каких случая он "штука нужная" ?

+1

Я тоже хотел об этом послушать.
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36358993
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУSeVaПорядка 30К предприятий, у них около 70К заводов и параходов, умножь это на несколько десятков пользователей.Основной запрос - выборка из таблиц иградиентов -продуктов других фирм (по 2000К в каждой) с джойном еще дюжины таблиц, если не делать ограничений на кол-во возращаемых записей (пользователи ребята ленивые и не будут напрягаться), никакое секционирование не поможет, база будет лежать пластом.
И что, под 30К предприятий и 70К заводов используется одна БД? Аааааа, мочить дебила Севу
Слетел со стула

Да там репликация должны быть между всеми звеньями. Паблишер, дестрибьютер и подписчик - классика репликации. Курите хоть транзакционную реплику, хоть мерж, хоть репликацию снимков.

А, я ж забыл. Сева даже не знает, что такое репликация

SeVaКакой смысл показывать милионы?
Для дятлов - пейджинг не показывает миллионы. Он показывает страницу (например, из 50 записейц)

Всё, дальнейший бред дятла Севы я не могу читать. Да, под 30К предприятий и 70К заводов используется одна БД и все щимятся в одну таблицу продуктов. Ухахаха
Кино. Какая репликация!? Предприятия все чужие, комы ты будешь нужен со своими базами, репликациями и головной болью? Ты представляешь себе репликации 70К БД? Выборка должна делаться быстро и из единой БД.
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36359019
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaКино. Какая репликация!? Предприятия все чужие, комы ты будешь нужен со своими базами, репликациями и головной болью?
Обыкновенная
В каждой организации стоит сервер с БД и нужные таблички.
Читайте, ламос: Replication Distribution Agent

Синхронизация каждой таблицы, хп, функции и т.д. настраивается под каждое предприятие.

SeVaТы представляешь себе репликации 70К БД? Выборка должна делаться быстро и из единой БД.
Представляю. И не вижу никаких сложностей. Чем это принципиально отличается от репликации 100 БД?

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

+1

Я тоже хотел об этом послушать.

Ответ будет?
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36359032
Фотография gds
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaпод 30К предприятий и 70К заводов используется одна БД
Скажите мне. Предположим на каждом предприятии и заводе по 10 рабочих. Ну так самый мизер.
Код: plaintext
(30 000 + 70 000) * 5 = 500 000 коннектов
этож пипец какая пропускная способность должна быть. Чет вы там реально не табак курите.

По поводу "грязного" чтения. Это очень удобно (идеально удобно) для формирования всякого рода отчетности или списка какого нить. т.к. актуальность данных производится на момент начала запроса. т.е. предположим запрос у вас отрабатывает за 30 сек. Вероятность, что кто то поменяет в корне данных за этот промежуток времени очень мала. Ну а если кто то добавит или удалит запись, то это ничего страшного т.к. вы получали актуальность данных именно на момент запроса.
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36359043
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gdsэтож пипец какая пропускная способность должна быть. Чет вы там реально не табак курите.
Да он п..дит, как всегда. Вы ж знайте с кем говорите. Главный п..бол sql.ru - Сева.
Сказочник, фантаст-публицсит
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36359051
Фотография gds
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опечатался сверху
Код: plaintext
(30 000 + 70 000) * 10 = 1 000 000 коннектов
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36359058
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gdsSeVaпод 30К предприятий и 70К заводов используется одна БД
Скажите мне. Предположим на каждом предприятии и заводе по 10 рабочих. Ну так самый мизер.
Код: plaintext
(30 000 + 70 000) * 5 = 500 000 коннектов
этож пипец какая пропускная способность должна быть. Чет вы там реально не табак курите.

По поводу "грязного" чтения. Это очень удобно (идеально удобно) для формирования всякого рода отчетности или списка какого нить. т.к. актуальность данных производится на момент начала запроса. т.е. предположим запрос у вас отрабатывает за 30 сек. Вероятность, что кто то поменяет в корне данных за этот промежуток времени очень мала. Ну а если кто то добавит или удалит запись, то это ничего страшного т.к. вы получали актуальность данных именно на момент запроса.
Всем изветсно, что одновременно работают 5-10%, раздели это на 24 часа(предприятия по всему миру),получишь совсем другие цифры. Но даже с ними и грязным чтением никакое железо не поможет. Приятно было пообщаться, но в больших кол-вах ты заразен
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36359076
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaВсем изветсно, что одновременно работают 5-10%
Это кому известно, что одновременно работают 5-10% на 30К предприятиях и 70К заводах?
Вы, что-ли, даете такую гарантию? ))

Жесть :)

P.S. Неполный список перлов от Севы:

1. Membership - это зло
2. Pricipal более продвинутый и гибкий вариант,к нему может быть прикручен любой метод и свойства
3. Пейджинг - это зло
4. "Пейджинг - штука нужная , но только не в шаловливых ручонках"
5. Грязное чтение - это зло
6. ...
7. ...

и так далее

Самый главное для Севы: пожелание Изопропила
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36359084
Фотография gds
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaВсем изветсно, что одновременно работают 5-10%,
Это вы сильно занизили. Хотите сказать у меня из 10 бухов работаю 0.5 - 1 человек? одновременно? Например.
Да у нас бы уже давно все уволили. А когда отчетность там еще и руководство на просмотр операций за день. чуть ли не каждые 5-10 мин. сканит базу. По опыту знаю может если и неработают то запущено приложение и сканы идут точно. что бы пасьянс успеть свернуть и показать "А вот я работаю просматриваю данные".
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36359092
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa,

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

Как это смотрится со стороны? Чел сидит программирeет и плачет от смеха медленно скатываясь под стол.

p.s. Парабовал, респект.
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36359135
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MCУ, есть еще много прописных истин, но тебе они не будут доступны.Ты, как наивный чукотский юноша, который ничего кроме фигвама и белого медведя не видел, полагаешь, что других решений, кроме твоего быть не может. Неужели ты думаешь, что в таких задачах напрямую работают с БД без сервера приложений и без тонкого клиента? Там ПО и железа было на лимоны.За одну только техподдержку IBM платили более 50К в год(точную цифру уже не помню).
В командировке ты пару раз побывал, попробовал вкус апельсина, но и только.

авторSeVa,

так что насчет пейджинга? можете объяснить почему эту штуку не надо использовать, но в то же время она нужная??
Если идет полный скан, то ограничивайте выборку или смотрите,как можно от этого избавиться. Попробуйте хотя бы раз провести стрестестирование, сразу все увидете.Если, как у MCУ - пару бухов и кладовщик, то можете идти по его стопам, ничего страшного не будет с парой запросов в месяц.
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36359215
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaMCУ, есть еще много прописных истин, но тебе они не будут доступны.
Это есть аргумент, чтобы не показывать код, который будет "лучше" моего? :)

SeVaТы, как наивный чукотский юноша, который ничего кроме фигвама и белого медведя не видел, полагаешь, что других решений, кроме твоего быть не может.
Я такое не говорил, в отличие от Вас. Наоборот, я прошу продемонстрировать Ваши знания и опыт. И, как всегда, напрасно. Ни кода от Севы, ни тестов, ни планов, ни решений. Один только пустой белый шум...

SeVaНеужели ты думаешь, что в таких задачах напрямую работают с БД без сервера приложений и без тонкого клиента?
Почему это я должен думать о таких задачах, которые напрямую работают с БД без сервера приложений и без тонкого клиента?
Задача задаче рознь. Я делал и многоуровневые (ринг 3) вин/веб системы, и интеграции между различными видами систем и серверов данных. И что? Причем тут это?
Если человек говорит, что пейджинг - зло, значит он должен ответить за свои слова. Чего от Вас мы не дождались. Опять пустозвонство, опять маразматические всплески эмоций, доказывающие свою некомпетентность...

SeVaТам ПО и железа было на лимоны.За одну только техподдержку IBM платили более 50К в год(точную цифру уже не помню).
Вы можете объяснить нам, нахрена Вы постите эту информацию сюда? Она никому не интересна и она не по теме. Как это относится к пейджингу и тем вопросам, на которые Вы трусливо отмалчиваетесь?

SeVaВ командировке ты пару раз побывал, попробовал вкус апельсина, но и только.
Опять пустословие.

SeVaЕсли идет полный скан, то ограничивайте выборку или смотрите,как можно от этого избавиться.
Ну и чем тут пейджинг не угодил? Кто мешает юзать ограничение выборки и пейджинг одновременно? У меня в примере так и есть: фильтр + пейджинг. Ась?

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

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

SeVaОдного этого достаточно.
Выражайся яснее. Аб чем хотела сказать умна-головушка-то? )

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

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

Данилка, Капитан Очевидность хочет поведать тебе то, что дошло уже до всех, кроме тебя:

Сева говорит о том, что на аццки больших объемах пейджинг будет лочить табицы одним только фактом своего существования ( а как ты думаешь работает ROW_NUMBER вместе с BETWEEN, а? ), поэтому он отказался от пейджинга и ограничивает максимальный объем данных юзерам, т.к. они 200 записей все равно за раз не прочитают, а 50 или 200 вытянуть - не велика разница.
ферштейн, тупая башка?
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36359333
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaЕсли идет полный скан, то ограничивайте выборку или смотрите,как можно от этого избавиться. Попробуйте хотя бы раз провести стрестестирование, сразу все увидете.Это я уяснил. Вы скажите почему же тогда назвали педжинг штукой полезной?
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36359342
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaПочитал краем глаза твой очередной бред.
Взаимно.

SeVaТы, что не знаешь, что фильтры разные бывают?
Есть поля и индексы с малой селективностью, для них будет только полный скан.
И что? Для них фильтры не пишутся?
И что мешает к фильтрам прикрутить пейджинг (это лучше жесткого "обрезания" запроса по TOP)? Для этого, всего-лишь, нужно выполнить Count(*) на текущую фильтрованную выборку.

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

семкипоэтому он отказался от пейджинга и ограничивает максимальный объем данных юзерам, т.к. они 200 записей все равно за раз не прочитают, а 50 или 200 вытянуть - не велика разница.
ферштейн, тупая башка?
Мне пох отчего он отказался. Ферштейн, тупая башка?
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36359377
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheerful CalfSeVaЕсли идет полный скан, то ограничивайте выборку или смотрите,как можно от этого избавиться. Попробуйте хотя бы раз провести стрестестирование, сразу все увидете.Это я уяснил. Вы скажите почему же тогда назвали педжинг штукой полезной?
Любым инструментом можно пользоваться бездумно, а можно по назначению. Теже 200 записей, что я упоминал, при плохих фильтрах, можно показывать постранично. Count делаем с грязным чтением,но всегда ограничиваем по кол-ву там, где могут быть большие объемы.Выборку уже нормально(бухи МСУ за кривые проводки простят, он там по блату, а с нас будет спрос), экономим на трафике и прочем, снижаем вероятность попадания на дедлок.
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36359420
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaЛюбым инструментом можно пользоваться бездумно, а можно по назначению.
Это к Вам не относится. Вы никаким инструментом не можете пользоваться. Ни думно ни бездумно.

SeVaТеже 200 записей, что я упоминал, при плохих фильтрах, можно показывать постранично.
Что есть "плохой" фильтр? Откуда взялись ограничивающий "критерий" в 200 записей?
А сколько записей нельзя уже юзать в пейджинге?

SeVaCount делаем с грязным чтением ,но всегда ограничиваем по кол-ву там, где могут быть большие объемы.
Обана!

=>

SeVaГрязное чтение - грязные данные, первый признак кривизны решения

Шоу продолжается

Пишем в лог:

МСУP.S. Неполный список перлов от Севы:

1. Membership - это зло
2. Pricipal более продвинутый и гибкий вариант,к нему может быть прикручен любой метод и свойства
3. Пейджинг - это зло
4. "Пейджинг - штука нужная , но только не в шаловливых ручонках"
5. Грязное чтение - это зло
6. Count делаем с грязным чтением ,но всегда ограничиваем по кол-ву там, где могут быть большие объемы.

Самый главное для Севы: пожелание Изопропила

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

МСУP.S. Неполный список перлов от Севы:

1. Membership - это зло
2. Pricipal более продвинутый и гибкий вариант,к нему может быть прикручен любой метод и свойства
3. Пейджинг - это зло
4. "Пейджинг - штука нужная , но только не в шаловливых ручонках"
5. Грязное чтение - грязные данные, первый признак кривизны решения
6. Count делаем с грязным чтением ,но всегда ограничиваем по кол-ву там, где могут быть большие объемы.

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

МСУСам запрос - это select top 50
А кол-во записей под пеёджер - это select count(*) from ( select top 50 ) + WHERE

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

МСУP.S. Неполный список перлов от Севы:

1. Membership - это зло
2. Pricipal более продвинутый и гибкий вариант,к нему может быть прикручен любой метод и свойства
3. Пейджинг - это зло
4. "Пейджинг - штука нужная , но только не в шаловливых ручонках"
5. Грязное чтение - грязные данные, первый признак кривизны решения
6. Count делаем с грязным чтением ,но всегда ограничиваем по кол-ву там, где могут быть большие объемы.

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

МСУСам запрос - это select top 50
А кол-во записей под пеёджер - это select count(*) from ( select top 50 ) + WHERE

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

P.S. Вам совет на будущее: когда будет что сказать по теме обсуждаемого вопроса, говорите, не стесняйтесь. Вообще, у Вас отличные ответы, грамотные, толковые. Но не хватает всего-лишь одного - аргументов

P.S2. Ладно, дитя порока, оставляю Вас наедине в Вашей убогой тупостью. Читайте буки и маны, после - приходите ко мне, буду экзаменовать. А пока - садитесь, двойка.
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36359578
семки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУСам запрос - это select top 50
А кол-во записей под пеёджер - это select count(*) from ( select top 50 ) + WHERE

МСУ, я правильно понимаю, что за свою тупость ответить нечего?
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36359608
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
семкиМСУСам запрос - это select top 50
А кол-во записей под пеёджер - это select count(*) from ( select top 50 ) + WHERE

МСУ, я правильно понимаю, что за свою тупость ответить нечего?

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

P.S. Вам совет на будущее: когда будет что сказать по теме обсуждаемого вопроса, говорите, не стесняйтесь. Вообще, у Вас отличные ответы, грамотные, толковые. Но не хватает всего-лишь одного - аргументов

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

МСУP.S. Неполный список перлов от Севы:

1. Membership - это зло
2. Pricipal более продвинутый и гибкий вариант,к нему может быть прикручен любой метод и свойства
3. Пейджинг - это зло
4. "Пейджинг - штука нужная , но только не в шаловливых ручонках"
5. Грязное чтение - грязные данные, первый признак кривизны решения
6. Count делаем с грязным чтением ,но всегда ограничиваем по кол-ву там, где могут быть большие объемы.

Самый главное для Севы: пожелание Изопропила


SeVaКакие фильтры плохие, а какие нет, как происходит выборка по индексам и когда оптимизатор ее не использует - загадка только для тебя.
Загадка для меня не только по поводу "плохих" фильтров (ссылка на определение где?), но и загадка для меня - с какого хрена пейджинг - это зло, грязное чтение - первый признак кривизны решения, Membership - это зло, Pricipal более продвинутый и гибкий вариант, ...

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

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

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

те же тапки, вид в профиль.
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36359688
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buredу меня подозрение, что он сразу все записи выбирает из БД, а не постранично.
Просто сами логично подумайте - если у Вас табличка в 5 миллионов записей, если выбирать все записи, а потом их "резать" и отдавать на клиента (браузер) - да помножить на количество работающих с этим источником пользователей - то ни один серв не выдержит такого напора.
Поэтому, применяют страничные выборки. А для формирования PageCount нужен второй запрос на Count(*) + WHERE записей.
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36359691
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buredМСУНу смотря как обрабатывать OnSelecting

те же тапки, вид в профиль.

Чего?

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

Код: plaintext
e.Result = (from i in dc.Users select i).Skip(UserGridView.PageIndex * 10).Take(10);
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36359711
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, между делом говоря, у меня сам Membership Administrator крутится на LinqDataSource с формированием серверных страничных выборок.
Тестировал на миллионе записей - залил в таблицу ролей. Летает как ветер. Андрюха, зря Вы тянете все данные на сервер приложений и там их режете PageIdnex'ами :)
Для табличек из тыщи записей - да, покатит )
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36359727
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУburedМСУНу смотря как обрабатывать OnSelecting

те же тапки, вид в профиль.

Чего?

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

P.S. Немного не понял Вас, Андрей. Как понимать это?

buredно у меня подозрение, что он сразу все записи выбирает из БД , а не постранично
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36359754
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ
P.S. Немного не понял Вас, Андрей. Как понимать это?
buredно у меня подозрение, что он сразу все записи выбирает из БД , а не постранично
всем известно, что стандартный пейджинг GridView осуществляется на клиенте.
В этом плане LinqDataSource ничем не отличается от SQLDataSource.
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36359759
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buredвсем известно, что стандартный пейджинг GridView осуществляется на клиенте.
В этом плане LinqDataSource ничем не отличается от SQLDataSource.
Еще раз говорю, Вам не нужно отруливать вот этой:
[img=http://i.msdn.microsoft.com/Aa479347.gridview_fg21(en-us,MSDN.10).gif]
фигнёй.
LinqDataSource сам всё это сделает в единственной обработчике селектовки. В этом-то и вся прелесть.

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

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

МСУP.S. Неполный список перлов от Севы:

1. Membership - это зло
2. Pricipal более продвинутый и гибкий вариант,к нему может быть прикручен любой метод и свойства
3. Пейджинг - это зло
4. "Пейджинг - штука нужная , но только не в шаловливых ручонках"
5. Грязное чтение - грязные данные, первый признак кривизны решения
6. Count делаем с грязным чтением ,но всегда ограничиваем по кол-ву там, где могут быть большие объемы.
7. Если таблица в 5 лимонов записей, то нужно менять структуру

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

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

SeVaПередай от меня привет тюленям и буху.
От кого, от дерева? Они с деревьями не гутарят
Взаимно, Данилка, с тобой тоже приятно и всегда весело можно провести время.
...
Рейтинг: 0 / 0
Как это сказать по линкувски? (left outer join по двум полям)
    #36361317
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaВзаимно, SeVa, с тобой тоже приятно и всегда весело можно провести время.
+1
...
Рейтинг: 0 / 0
127 сообщений из 127, показаны все 6 страниц
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как это сказать по линкувски? (left outer join по двум полям)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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