count over () vs count(*) + select

pil0t
Дата: 22.01.2009 01:51:16
При подсчете количества записей в выборке с помощью count over ([partition by null]) очень сильно падает производительность, настолько что выполнение select-а одним запросом, а count(*) другим - быстрее в несколько раз. в чем может быть проблема?
tpg
Дата: 22.01.2009 06:45:23
Например, в отсутствии правильных индексов.
iap
Дата: 22.01.2009 08:36:00
pil0t
При подсчете количества записей в выборке с помощью count over ([partition by null]) очень сильно падает производительность, настолько что выполнение select-а одним запросом, а count(*) другим - быстрее в несколько раз. в чем может быть проблема?
А что такое count over ([partition by null]) ?
Может, я отстал от жизни, может, это в SQL2008 так пишут?
Я бы написал
count(*) over()
pkarklin
Дата: 22.01.2009 08:40:41
Интересно, а зачем в той же выборке считать число записей в ней?!
pil0t
Дата: 22.01.2009 15:18:36
count(*) over() - Работат так же иногда даже медленней чем c partition by null
нужно получить данные из таблицы, и передать общее число строк для пэйджинга

а какие индексы правильные?

выборка может происходить с фильтрацией по одному или нескольким полей, поля - ссылки (uniqueidentifier)
Поле "автор" д
Дата: 22.01.2009 15:37:27
pil0t
count(*) over() - Работат так же иногда даже медленней чем c partition by null
нужно получить данные из таблицы, и передать общее число строк для пэйджинга

а какие индексы правильные?

выборка может происходить с фильтрацией по одному или нескольким полей, поля - ссылки (uniqueidentifier)


и вот мы не зная таблиц и запросов счас тебе правильный индекс подскажем
pil0t
Дата: 22.01.2009 15:59:45
CREATE TABLE [Star] (
  [id] uniqueidentifier  DEFAULT newid() NOT NULL,
  [Наименование] nvarchar(400) NOT NULL,
  [Qty] int NOT NULL,
  [Price] numeric(18, 2) NOT NULL,
  [Sum] AS ([Qty]*[Price]) PERSISTED,
  [r1] uniqueidentifier NOT NULL REFERENCES r1(id),
  [r2] uniqueidentifier NOT NULL REFERENCES r2(id),
  [r3] uniqueidentifier NOT NULL REFERENCES r3(id),
  [r4] uniqueidentifier NOT NULL REFERENCES r4(id),
  [r5] uniqueidentifier NOT NULL REFERENCES r5(id),
  [r6] uniqueidentifier NOT NULL REFERENCES r6(id),
  [r7] uniqueidentifier NOT NULL REFERENCES r7(id),
  [r8] uniqueidentifier NOT NULL REFERENCES r8(id),
  [r9] uniqueidentifier NOT NULL REFERENCES r9(id),
  PRIMARY KEY CLUSTERED ([id])
);
фильтр[ы] по r1-r9

запрос выборки с JOIN-ом одного из r1-r9 и упорядочиванием по текстовому полью присоединенной таблицы
Glory
Дата: 22.01.2009 16:03:08
pil0t
[
запрос выборки с JOIN-ом одного из r1-r9 и упорядочиванием по текстовому полью присоединенной таблицы

Хм. А count over тут с какой стороны тогда ?
pkarklin
Дата: 22.01.2009 16:14:54
pil0t
выборка может происходить с фильтрацией по одному или нескольким полей, поля - ссылки (uniqueidentifier)


SELECT бла-бла-бла
SELECT @@rowcount
pil0t
Дата: 22.01.2009 17:03:05
pkarklin,

SELECT @@rowcount - не то, нужно сколько всего в выборке (скажем 100 000) а выбирается только 25