Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 03:55 12.05.24 
Клубове/ Компютри и Интернет / Бази данни Всички теми Следваща тема Пълен преглед*
Информация за клуба
Тема Re: Гепи 3 [re: AzSumZmei]
Автор wqw (непознат )
Публикувано16.08.05 15:02  



Преди да получим RowNo от yukon нямам никаква по добра. Ето моят тест:

SET         NOCOUNT ON


CREATE TABLE #Numbers (
SeqNo INT IDENTITY (1, 1)
, Dummy INT NULL
)

INSERT #Numbers(Dummy)
SELECT TOP 5000 NULL
FROM syscolumns s1, syscolumns s2

CREATE TABLE #MyTable (
DIN INT NOT NULL
, RSN INT NOT NULL
, AuditId INT NOT NULL
, UNIQUE (DIN, RSN, AuditId)
)

INSERT #MyTable(DIN, RSN, AuditId)
SELECT n.SeqNo
, s.RSN
, s.AuditId
FROM (
SELECT 2,2 UNION ALL
SELECT 1,1 UNION ALL
SELECT 1,3 UNION ALL
SELECT 3,4 UNION ALL
SELECT 2,5 UNION ALL
SELECT 1,5 UNION ALL
SELECT 1,2 UNION ALL
SELECT 3,3
) s(RSN, AuditId)
CROSS JOIN #Numbers n

PRINT { fn CURRENT_TIME() }

SELECT t.*
, 1 + ( SELECT COUNT(*)
FROM #MyTable t1
WHERE t1.DIN = t.DIN
AND t1.RSN < t.RSN
OR t1.DIN = t.DIN
AND t1.RSN = t.RSN
AND t1.AuditId < t.AuditId ) AS ASN
FROM #MyTable t
ORDER BY Din, RSN, AuditId

PRINT { fn CURRENT_TIME() }

SELECT t.*
, 1 + ( SELECT COUNT(*)
FROM #MyTable t1
WHERE t1.DIN = t.DIN
AND t1.RSN < t.RSN )
+ ( SELECT COUNT(*)
FROM #MyTable t1
WHERE t1.DIN = t.DIN
AND t1.RSN = t.RSN
AND t1.AuditId < t.AuditId ) AS ASN
FROM #MyTable t
ORDER BY Din, RSN, AuditId

PRINT { fn CURRENT_TIME() }

DROP TABLE #Numbers
DROP TABLE #MyTable

Само добри индекси оправят performance-а. Често разделянето на OR-а в два/три/etc. SELECT-а е по-бързо.

@OP: За повече примери търси ranking function в google.

cheers,
</wqw>



Цялата тема
ТемаАвторПубликувано
* SQL Server - номериране в групи Pride of The North   08.08.05 17:17
. * Re: SQL Server - номериране в групи Pride of The North   08.08.05 17:44
. * Гепи AzSumZmei   08.08.05 17:45
. * Re: Гепи Pride of The North   08.08.05 17:55
. * Гепи 2 AzSumZmei   08.08.05 18:10
. * Re: Гепи 2 Pride of The North   08.08.05 18:19
. * Re: Гепи 2 AzSumZmei   08.08.05 18:27
. * Re: Гепи 2 + AzSumZmei   08.08.05 19:34
. * Гепи 3 AzSumZmei   09.08.05 10:47
. * решението ти е идеално darklord   11.08.05 16:36
. * Re: Гепи 3 wqw   13.08.05 14:50
. * Re: Гепи 3 AzSumZmei   15.08.05 12:17
. * Re: Гепи 3 wqw   16.08.05 15:02
. * Re: Гепи 3 AzSumZmei   16.08.05 15:39
. * Re: Гепи 3 wqw   16.08.05 16:04
. * Re: SQL Server - номериране в групи unknown   11.08.05 18:55
. * Re: SQL Server - номериране в групи wqw   13.08.05 14:53
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.