![]() |
Настройка системы для увеличения быстродействия при работе с деревом папокИсточник: dvprofessionals
Для подсветки непрочитанных карточек в папке, для каждого пользователя, выполняется SQL процедура, которая определяет и подсчитывает количество непрочитанных пользователем карточек. Выполнение этой процедуры, влияет на время загрузки дерева папок, навигацию по вложенным узлам дерева папок, отображение содержимого папки, особенно для папок с большим количеством карточек. Для увеличения быстродействия при работе с деревом папок рекомендуется отключать подсветку непрочитанных карточек на всех папках системы, кроме личных папок пользователей. Ниже приведен скрипт, отключающий подсветку непрочитанных карточек на всех папках, кроме личных папок пользователей. 01.SET XACT_ABORT ON;02. 03.IF OBJECT_ID('dbo.FolderInfo') IS NULL04.BEGIN05. CREATE TABLE dbo.FolderInfo06. (07. FolderID uniqueidentifier PRIMARY KEY08. ,Flags int NULL09. )10.END11. 12.DECLARE @Folders TABLE (Id uniqueidentifier PRIMARY KEY)13. 14.-- Select folders from UserProfile card15.INSERT @Folders(Id)16.SELECT DISTINCT DefaultFolderID17.FROM dbo.[dvtable_{C64843C3-484F-45E0-9B8A-900EA91BE54D}] WITH(NOLOCK)18.WHERE DefaultFolderID IS NOT NULL;19. 20.BEGIN TRAN;21. 22.-- Backup old folder flags23.WITH UserFoldersTree(FolderID, NestLevel)24.AS25.(26. SELECT27. Id28. ,129. FROM @Folders30. 31. UNION ALL32. 33. SELECT34. RowID35. ,tPrev.NestLevel + 136. FROM dbo.[dvtable_{FE27631D-EEEA-4E2E-A04C-D4351282FB55}] tFld WITH(NOLOCK)37. JOIN UserFoldersTree tPrev ON tPrev.FolderID = tFld.ParentTreeRowID38.)39.INSERT dbo.FolderInfo40.(41. FolderID42. ,Flags43.)44.SELECT45. RowID46. ,Flags47.FROM dbo.[dvtable_{FE27631D-EEEA-4E2E-A04C-D4351282FB55}] tFld WITH(NOLOCK)48.LEFT JOIN UserFoldersTree tUserFld ON tUserFld.FolderID = tFld.RowID49.WHERE tUserFld.FolderID IS NULL50. 51.-- Switch off Unread count52.UPDATE tFld53.SET Flags = ISNULL(tFld.Flags, 0) / 4 -- NO_UNREAD_COUNT flag54.FROM dbo.[dvtable_{FE27631D-EEEA-4E2E-A04C-D4351282FB55}] tFld WITH(TABLOCK)55.JOIN dbo.FolderInfo tInfo WITH(NOLOCK) ON tInfo.FolderID = tFld.RowID56. 57.IF @@ERROR <> 058. ROLLBACK TRAN;59. 60.COMMIT TRAN; |