Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 подскажите оптимизацию (нахождение трансверсали)  [new]
Шпунтик
Member

Откуда:
Сообщений: 148
вроде это так называется)

есть таблица: (A int, B int, C int, cost float)

A, B и C суть одно и то же, набор айдишников

что у меня происходит сейчас:

1. сортирую по увеличению результата cost, выбирают верхнюю строчку, переношу в финальную таблицу
2. удаляю из таблицы строчки, в которых A,B,C in (@A,@B,@C)
3. продолжаю. пока есть строчки в таблице

и такая вот лажа вешает весь скрипт на 90+ процентов

как быть? не могу придумать
16 янв 12, 19:10    [11913750]     Ответить | Цитировать Сообщить модератору
 Re: подскажите оптимизацию (нахождение трансверсали)  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8877
Или мне плохо или я не понял (это что-то типа выборки А, Бэ, Цэ + макс(кость) через групбай? в новую таблицу). Пример в студию!
16 янв 12, 20:09    [11914047]     Ответить | Цитировать Сообщить модератору
 Re: подскажите оптимизацию (нахождение трансверсали)  [new]
invm
Member

Откуда: Москва
Сообщений: 9825
declare @t table (A int, B int, C int, cost float);

insert into @t
values
 (1, 2, 3, .1),
 (1, 2, 3, .2),
 (1, 2, 3, .3),
 (3, 2, 1, .4),
 (4, 2, 3, .5),
 (4, 2, 3, .6),
 (4, 2, 3, .7),
 (4, 2, 3, .8),
 (4, 2, 3, .9),
 (4, 2, 3, 1.),
 (5, 2, 3, 2.),
 (5, 2, 3, 3.),
 (5, 2, 3, 4.)
 
select top (1) with ties
 *
from
 @t
order by
 row_number() over (partition by A, B, C order by cost);
Оно?
16 янв 12, 20:13    [11914066]     Ответить | Цитировать Сообщить модератору
 Re: подскажите оптимизацию (нахождение трансверсали)  [new]
Шпунтик
Member

Откуда:
Сообщений: 148
invm, нет, сейчас происходит следующее:

declare @t table (A int, B int, C int, cost float);
declare @t2 table (A int, B int, C int, cost float);
declare @A int, @B int, @C int, @cost float

INSERT INTO @t
VALUES
 (1, 2, 3, .1),
 (1, 2, 3, .2),
 (1, 2, 3, .3),
 (3, 2, 1, .4),
 (4, 2, 3, .5),
 (4, 2, 3, .6),
 (4, 2, 3, .7),
 (4, 2, 3, .8),
 (4, 2, 3, .9),
 (4, 2, 3, 1.),
 (5, 2, 3, 2.),
 (5, 2, 3, 3.),
 (5, 4, 6, 4.)
WHILE(SELECT COUNT(*) FROM @t)>0
BEGIN
	SELECT TOP (1) 
		@A=A,
		@B=B,
		@C=C,
		@cost=cost
	FROM @t
	ORDER BY cost asc
	
	INSERT INTO @t2
	VALUES(@A,@B,@C,@cost)
	
	DELETE FROM @t
	WHERE A in (@A,@B,@C) or B in (@A,@B,@C) or C in (@A,@B,@C)
END

SELECT * FROM @t2
16 янв 12, 20:27    [11914129]     Ответить | Цитировать Сообщить модератору
 Re: подскажите оптимизацию (нахождение трансверсали)  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Шпунтик, а зачем именно удалять? На крайняк, если другими методами не получится - с помощью рекурсивного СТЕ отбирайте.
16 янв 12, 20:46    [11914215]     Ответить | Цитировать Сообщить модератору
 Re: подскажите оптимизацию (нахождение трансверсали)  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
kDnZP
Шпунтик, а зачем именно удалять? На крайняк, если другими методами не получится - с помощью рекурсивного СТЕ отбирайте.

Хотя нифига... забыл про ограничения в рекурсивной части запроса. Надобно подумать.
16 янв 12, 21:11    [11914285]     Ответить | Цитировать Сообщить модератору
 Re: подскажите оптимизацию (нахождение трансверсали)  [new]
Шпунтик
Member

Откуда:
Сообщений: 148
kDnZP,

да, я сейчас тоже почитал, попробовал, нельзя подзапросы в рекурсивной части использовать, но всё равно - новое что-то узнал, спасибо)
16 янв 12, 21:20    [11914310]     Ответить | Цитировать Сообщить модератору
 Re: подскажите оптимизацию (нахождение трансверсали)  [new]
ё
Guest
распределение cost в исходной таблице?
17 янв 12, 10:04    [11915562]     Ответить | Цитировать Сообщить модератору
 Re: подскажите оптимизацию (нахождение трансверсали)  [new]
Шпунтик
Member

Откуда:
Сообщений: 148
ё,

да, вон же пример я привёл выше
17 янв 12, 10:56    [11915915]     Ответить | Цитировать Сообщить модератору
 Re: подскажите оптимизацию (нахождение трансверсали)  [new]
_Slash_
Member

Откуда:
Сообщений: 46
Шпунтик,

то есть у вас получается, если в терминах группировки делать

что (5, 4, 6) и (4, 2, 3) входят в одну группу потому что есть общее число 4
также (1, 2, 3) и (4, 2, 3) входят в одну группу
но при этом (5, 4, 6) и (1, 2, 3) не входят в одну группу?
и группы фактически зависят от порядка построения, то есть от значений в cost

Если так то мне кажется ваш метод единственный, и можно пробовать только по мелочам что то усовершенствовать
17 янв 12, 11:40    [11916274]     Ответить | Цитировать Сообщить модератору
 Re: подскажите оптимизацию (нахождение трансверсали)  [new]
Шпунтик
Member

Откуда:
Сообщений: 148
_Slash_,

да, если я Вас правильно понял, то Вы правильно понимаете)
17 янв 12, 12:09    [11916491]     Ответить | Цитировать Сообщить модератору
 Re: подскажите оптимизацию (нахождение трансверсали)  [new]
_Slash_
Member

Откуда:
Сообщений: 46
Шпунтик,

и кстати это не трансверсаль ))
трансверсаль - это когда берется по одному элементу из каждого множества, а вот это ваше условие,
"строчки, в которых A,B,C in (@A,@B,@C)"
не разбивает таблицу на непересекающиеся кусочки
Вы вообще уверены что задача правильно поставлена, а то как то все странно тут, непонятно зачем это все может портебоваться?
17 янв 12, 13:19    [11917130]     Ответить | Цитировать Сообщить модератору
 Re: подскажите оптимизацию (нахождение трансверсали)  [new]
Шпунтик
Member

Откуда:
Сообщений: 148
_Slash_,

есть группа рабочих из n человек

они могут работать группами по 3/2/1 человеку. по каждой такой группе известна их производительность труда (причём для 3х человек она в большинстве случаев больше, чем лучшая для одного, умноженная на 3)

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

при этом групп и 3, 2 и 1 человека может быть заявлено не полное возможное количество, например, есть 5 работников: A,B,C,D,E

известно, что:
ABC 15
ABD16
EDC22
AC12
AE8
A3
D4
B2
C2
E2
17 янв 12, 14:39    [11917954]     Ответить | Цитировать Сообщить модератору
 Re: подскажите оптимизацию (нахождение трансверсали)  [new]
_Slash_
Member

Откуда:
Сообщений: 46
Шпунтик,

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

Правда в этом случае вопрос выходит за рамки форума ))
17 янв 12, 16:43    [11919398]     Ответить | Цитировать Сообщить модератору
 Re: подскажите оптимизацию (нахождение трансверсали)  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Нашли место для решения NP полных задач.

1. Нефиг заведомо левые даные пихать.
DECLARE @TALE TABLE (A Int, B Int, C Int, PRIMARY KEY (A,B,C), Cost Decimal);

2. Группы имеют разный набор. Поэтому в плоскую таблу переносить более чем старнно.
DECLARE	@Element TABLE (
	 [Element]	Int	PRIMARY KEY
);
DECLARE	@Group TABLE (
	 [Group]	Int	PRIMARY KEY
	,[Cost]		Decimal	NOT NULL
);
DECLARE	@GroupElement TABLE (
	 [Group]	Int	-- FK @Group
	,[Element]	Int	-- FK @Element
	,PRIMARY KEY (
		 [Element]	-- Порядок для оптимальности решения, но нужно ещё помучать
		,[Group]
	)
	)
);
+ Заполенение данными
INSERT	@Element
VALUES	(1),(2),(3),(4),(5)	-- ABCDE

INSERT @Group VALUES ( 1,15)	INSERT @GroupElement VALUES ( 1,1),( 1,2),( 1,3)	-- ABC	15
INSERT @Group VALUES ( 2,16)	INSERT @GroupElement VALUES ( 2,1),( 2,2),( 2,4)	-- ABD	16
INSERT @Group VALUES ( 3,22)	INSERT @GroupElement VALUES ( 3,3),( 3,4),( 3,5)	-- CDE	22
INSERT @Group VALUES ( 4,12)	INSERT @GroupElement VALUES ( 4,1),( 4,3)		-- AC	12
INSERT @Group VALUES ( 5, 8)	INSERT @GroupElement VALUES ( 5,1),( 5,5)		-- AE	8
INSERT @Group VALUES ( 6, 3)	INSERT @GroupElement VALUES ( 6,1)			-- A	3
INSERT @Group VALUES ( 7, 4)	INSERT @GroupElement VALUES ( 7,2)			-- B	2
INSERT @Group VALUES ( 8, 2)	INSERT @GroupElement VALUES ( 8,3)			-- C	2
INSERT @Group VALUES ( 9, 2)	INSERT @GroupElement VALUES ( 9,4)			-- D	4
INSERT @Group VALUES (10, 2)	INSERT @GroupElement VALUES (10,5)			-- E	2
Статически для данной задачи решение будет:
+ Статическое решение
SELECT	Top(1)
	 C.Cost
	,G1.[Group] AS G1
	,G2.[Group] AS G2
	,G3.[Group] AS G3
	,G4.[Group] AS G4
	,G5.[Group] AS G5
FROM	          @Group G1
	LEFT JOIN @Group G2 ON G2.[Group] > G1.[Group]
	LEFT JOIN @Group G3 ON G3.[Group] > G2.[Group]
	LEFT JOIN @Group G4 ON G4.[Group] > G3.[Group]
	LEFT JOIN @Group G5 ON G5.[Group] > G4.[Group]
	CROSS APPLY (SELECT
		  IsNull(G1.Cost,0)
		+ IsNull(G2.Cost,0)
		+ IsNull(G3.Cost,0)
		+ IsNull(G4.Cost,0)
		+ IsNull(G5.Cost,0)) C(Cost)
WHERE	NOT Exists(	-- Группы не пересекаются
		SELECT	E.[Element]
		FROM	@GroupElement E
		WHERE	E.[Group] IN (G1.[Group],G2.[Group],G3.[Group],G4.[Group],G5.[Group])
		GROUP BY E.[Element]
		HAVING Count(*) > 1
	)
	AND NOT Exists(-- Все элементы задействованы
		SELECT	*
		FROM	@Element E
		WHERE	NOT Exists(
				SELECT	*
				FROM	@GroupElement G
				WHERE	    G.[Group] IN (G1.[Group],G2.[Group],G3.[Group],G4.[Group],G5.[Group])
					AND G.[Element] = E.[Element]
		)
	)
ORDER BY C.Cost DESC
CostG1G2G3G4G5
202810NULLNULL


Для решения общей задачи нужно составить генератор данного скрипта. Как вы видите, количество элеметов (JOIN + IN) в запросе равно воличеству элементов в задаче (больше, естественно, не имеет смысла). Если устраивает подход, могу выложить генератор.
17 янв 12, 18:57    [11920503]     Ответить | Цитировать Сообщить модератору
 Re: подскажите оптимизацию (нахождение трансверсали)  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Mnior
Для решения общей задачи нужно составить генератор данного скрипта. Как вы видите, количество элеметов (JOIN + IN) в запросе равно воличеству элементов в задаче (больше, естественно, не имеет смысла). Если устраивает подход, могу выложить генератор.
Можно и без динамики, но с ограничением.
Условимся что количество элементов не больше 20, тогда пишем один скрипт на соответствующее число JOIN и IN. Который будет решать все задачи с количеством элементов не более заданного (20).
Недостаток - чуть хуже по производительности.
17 янв 12, 19:01    [11920517]     Ответить | Цитировать Сообщить модератору
 Re: подскажите оптимизацию (нахождение трансверсали)  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
1.
+ Лишняя скобка
DECLARE	@Element TABLE (
	 [Element]	Int	PRIMARY KEY
);
DECLARE	@Group TABLE (
	 [Group]	Int	PRIMARY KEY
	,[Cost]		Decimal	NOT NULL
);
DECLARE	@GroupElement TABLE (
	 [Group]	Int	-- FK @Group
	,[Element]	Int	-- FK @Element
	,PRIMARY KEY (
		 [Element]	-- Порядок для оптимальности решения, но нужно ещё помучать
		,[Group]
	)
);

2. IsNull(G1.Cost,0) - жертва красоте.
17 янв 12, 19:06    [11920539]     Ответить | Цитировать Сообщить модератору
 Re: подскажите оптимизацию (нахождение трансверсали)  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Mnior
Статическое решение
Допустил непростительную оплошность. (Вопиющее непонимание SQL)
Её можно обойти так:
1. Добавить комбинационную строку:
INSERT @Group VALUES (0,0)
2. Заменить выражение:
ON Gy.[Group] > Gx.[Group] -- Old
ON Gy.[Group] > Gx.[Group] OR Gy.[Group] = 0 -- New
+ Получаем
DECLARE	@Element TABLE (
	 [Element]	Int	PRIMARY KEY
);
DECLARE	@Group TABLE (
	 [Group]	Int	PRIMARY KEY
	,[Cost]		Decimal	NOT NULL
);
DECLARE	@GroupElement TABLE (
	 [Group]	Int	-- FK @Group
	,[Element]	Int	-- FK @Element
	,PRIMARY KEY (
		 [Element]	-- Порядок для оптимальности решения, но нужно ещё помучать
		,[Group]
	)
);
--------------------------------------------------------------------------------
INSERT @Group VALUES (0,0)	-- Для алгаридма

INSERT	@Element
VALUES	(1),(2),(3),(4),(5)	-- ABCDE

INSERT @Group VALUES ( 1,15)	INSERT @GroupElement VALUES ( 1,1),( 1,2),( 1,3)	-- ABC	15
INSERT @Group VALUES ( 2,16)	INSERT @GroupElement VALUES ( 2,1),( 2,2),( 2,4)	-- ABD	16
INSERT @Group VALUES ( 3,22)	INSERT @GroupElement VALUES ( 3,3),( 3,4),( 3,5)	-- CDE	22
INSERT @Group VALUES ( 4,12)	INSERT @GroupElement VALUES ( 4,1),( 4,3)		-- AC	12
INSERT @Group VALUES ( 5, 8)	INSERT @GroupElement VALUES ( 5,1),( 5,5)		-- AE	8
INSERT @Group VALUES ( 6, 3)	INSERT @GroupElement VALUES ( 6,1)			-- A	3
INSERT @Group VALUES ( 7, 4)	INSERT @GroupElement VALUES ( 7,2)			-- B	2
INSERT @Group VALUES ( 8, 2)	INSERT @GroupElement VALUES ( 8,3)			-- C	2
INSERT @Group VALUES ( 9, 2)	INSERT @GroupElement VALUES ( 9,4)			-- D	4
INSERT @Group VALUES (10, 2)	INSERT @GroupElement VALUES (10,5)			-- E	2
--------------------------------------------------------------------------------
SELECT	Top(1)
	 C.Cost
	,G1.[Group] AS G1
	,G2.[Group] AS G2
	,G3.[Group] AS G3
	,G4.[Group] AS G4
	,G5.[Group] AS G5
FROM	          @Group G1
	LEFT JOIN @Group G2 ON G2.[Group] > G1.[Group] OR G2.[Group] = 0
	LEFT JOIN @Group G3 ON G3.[Group] > G2.[Group] OR G3.[Group] = 0
	LEFT JOIN @Group G4 ON G4.[Group] > G3.[Group] OR G4.[Group] = 0
	LEFT JOIN @Group G5 ON G5.[Group] > G4.[Group] OR G5.[Group] = 0
	CROSS APPLY (SELECT
		  IsNull(G1.Cost,0)
		+ IsNull(G2.Cost,0)
		+ IsNull(G3.Cost,0)
		+ IsNull(G4.Cost,0)
		+ IsNull(G5.Cost,0)) C(Cost)
WHERE	    NOT Exists(	-- Группы не пересекаются
		SELECT	E.[Element]
		FROM	@GroupElement E
		WHERE	E.[Group] IN (G1.[Group],G2.[Group],G3.[Group],G4.[Group],G5.[Group])
		GROUP BY E.[Element]
		HAVING Count(*) > 1
	)
	AND NOT Exists(	-- Все элементы задействованы
		SELECT	*
		FROM	@Element E
		WHERE	NOT Exists(
				SELECT	*
				FROM	@GroupElement G
				WHERE	    G.[Group] IN (G1.[Group],G2.[Group],G3.[Group],G4.[Group],G5.[Group])
					AND G.[Element] = E.[Element]
		)
	)
ORDER BY C.Cost DESC
Для решения надо запустить.
18 янв 12, 00:30    [11921805]     Ответить | Цитировать Сообщить модератору
 Re: подскажите оптимизацию (нахождение трансверсали)  [new]
Шпунтик
Member

Откуда:
Сообщений: 148
Mnior,

ох, спасибо, завтра буду смотреть с утра, сейчас уже не соображаю
выкладывайте генератор, конечно, всё интересно
18 янв 12, 00:54    [11921849]     Ответить | Цитировать Сообщить модератору
 Re: подскажите оптимизацию (нахождение трансверсали)  [new]
Шпунтик
Member

Откуда:
Сообщений: 148
Mnior,

Cost G1 G2 G3 G4 G5
51 3 0 3 6 7

запустил, ответ вот такой)
что вроде выглядит как-то странно) во-1, G1 и G3 равны, во-2, G2 никуда не попала

синтаксис я не весь понимаю, сейчас буду разбираться
18 янв 12, 13:38    [11924897]     Ответить | Цитировать Сообщить модератору
 Re: подскажите оптимизацию (нахождение трансверсали)  [new]
Шпунтик
Member

Откуда:
Сообщений: 148
Mnior,

модернизировал:
+

DECLARE	@Element TABLE (
	 [Element]	Int	PRIMARY KEY
);
DECLARE	@Group TABLE (
	 [Group]	Int	PRIMARY KEY
	,[Cost]		Decimal	NOT NULL
);
DECLARE	@GroupElement TABLE (
	 [Group]	Int	-- FK @Group
	,[Element]	Int	-- FK @Element
	,PRIMARY KEY (
		 [Element]	-- Порядок для оптимальности решения, но нужно ещё помучать
		,[Group]
	)
);
--------------------------------------------------------------------------------
INSERT @Group VALUES (0,0)	-- Для алгаридма

INSERT	@Element
VALUES	(1),(2),(3),(4),(5)	-- ABCDE

INSERT @Group VALUES ( 1,15)	INSERT @GroupElement VALUES ( 1,1),( 1,2),( 1,3)	-- ABC	15
INSERT @Group VALUES ( 2,16)	INSERT @GroupElement VALUES ( 2,1),( 2,2),( 2,4)	-- ABD	16
INSERT @Group VALUES ( 3,22)	INSERT @GroupElement VALUES ( 3,3),( 3,4),( 3,5)	-- CDE	22
INSERT @Group VALUES ( 4,12)	INSERT @GroupElement VALUES ( 4,1),( 4,3)		-- AC	12
INSERT @Group VALUES ( 5, 8)	INSERT @GroupElement VALUES ( 5,1),( 5,5)		-- AE	8
INSERT @Group VALUES ( 6, 3)	INSERT @GroupElement VALUES ( 6,1)			-- A	3
INSERT @Group VALUES ( 7, 2)	INSERT @GroupElement VALUES ( 7,2)			-- B	2
INSERT @Group VALUES ( 8, 2)	INSERT @GroupElement VALUES ( 8,3)			-- C	2
INSERT @Group VALUES ( 9, 4)	INSERT @GroupElement VALUES ( 9,4)			-- D	4
INSERT @Group VALUES (10, 2)	INSERT @GroupElement VALUES (10,5)			-- E	2
--------------------------------------------------------------------------------
SELECT	--Top(1)
	 C.Cost
	,G1.[Group] AS G1
	,G2.[Group] AS G2
	,G3.[Group] AS G3
	,G4.[Group] AS G4
	,G5.[Group] AS G5
FROM	          @Group G1
	LEFT JOIN @Group G2 ON G2.[Group] IN (SELECT [Group] FROM @GroupElement WHERE [Element]=2 UNION ALL SELECT 0 FROM @GroupElement)
	LEFT JOIN @Group G3 ON G3.[Group] IN (SELECT [Group] FROM @GroupElement WHERE [Element]=3 UNION ALL SELECT 0 FROM @GroupElement)
	LEFT JOIN @Group G4 ON G4.[Group] IN (SELECT [Group] FROM @GroupElement WHERE [Element]=4 UNION ALL SELECT 0 FROM @GroupElement)
	LEFT JOIN @Group G5 ON G5.[Group] IN (SELECT [Group] FROM @GroupElement WHERE [Element]=5 UNION ALL SELECT 0 FROM @GroupElement)
	CROSS APPLY (SELECT
		  IsNull(G1.Cost,0)
		+ IsNull(G2.Cost,0)
		+ IsNull(G3.Cost,0)
		+ IsNull(G4.Cost,0)
		+ IsNull(G5.Cost,0)) C(Cost)
WHERE G1.[Group] IN (SELECT [Group] FROM @GroupElement WHERE [Element]=1 UNION ALL SELECT 0 FROM @GroupElement)

	AND NOT Exists(	-- Группы не пересекаются
		SELECT	E.[Element]
		FROM	@GroupElement E
		WHERE	E.[Group] in (G1.[Group],G2.[Group],G3.[Group],G4.[Group],G5.[Group])
		GROUP BY E.[Element]
		HAVING Count(*) > 1
	)
	/*AND NOT Exists(	-- Все элементы задействованы
		SELECT	*
		FROM	@Element E
		WHERE	NOT Exists(
				SELECT	*
				FROM	@GroupElement G
				WHERE	    G.[Group] IN (G1.[Group],G2.[Group],G3.[Group],G4.[Group],G5.[Group])
					AND G.[Element] = E.[Element]
		)
	)*/
ORDER BY C.Cost DESC

18 янв 12, 14:07    [11925199]     Ответить | Цитировать Сообщить модератору
 Re: подскажите оптимизацию (нахождение трансверсали)  [new]
Шпунтик
Member

Откуда:
Сообщений: 148
Шпунтик,

интересно, сколько это будет работать на моих
100 работниках)
18 янв 12, 14:10    [11925231]     Ответить | Цитировать Сообщить модератору
 Re: подскажите оптимизацию (нахождение трансверсали)  [new]
Шпунтик
Member

Откуда:
Сообщений: 148
Mnior,

я так понимаю, тут ответ будет при всём ещё и оптимальный?
18 янв 12, 14:11    [11925242]     Ответить | Цитировать Сообщить модератору
 Re: подскажите оптимизацию (нахождение трансверсали)  [new]
Шпунтик
Member

Откуда:
Сообщений: 148
Шпунтик,

кстати, всё ещё фигня потому, что cost суммируется столько раз, сколько группа входит в итоговое разбиение
18 янв 12, 14:46    [11925621]     Ответить | Цитировать Сообщить модератору
 Re: подскажите оптимизацию (нахождение трансверсали)  [new]
Шпунтик
Member

Откуда:
Сообщений: 148
Шпунтик,

для 23 работников он у меня уже считает больше часа, что и ожидалось)
18 янв 12, 16:10    [11926733]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить