addFiguresByROFstIDandImageIDs - Improve ROFst Update Performance

use entire ROID to find affected ROUsage record
getDRoUsagesByROIDs - Find ROUsages by a list of ROIDs
Added a missing field (IsRange) to getExternalTransitions
getJustROFst - Improve ROFst Update Performance
getROImagesByRODbIDNoData  - Improve ROFst Update Performance
getRoUsagesByROIDs  - Improve ROFst Update Performance
This commit is contained in:
Rich 2011-07-18 14:54:26 +00:00
parent ef54718fb1
commit 248c1679bc

View File

@ -680,6 +680,53 @@ IF (@@Error = 0) PRINT 'Procedure Creation: addFigure Succeeded'
ELSE PRINT 'Procedure Creation: addFigure Error on Creation'
GO
/****** Object: StoredProcedure [addFiguresByROFstIDandImageIDs] ******/
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addFiguresByROFstIDandImageIDs]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
DROP PROCEDURE [addFiguresByROFstIDandImageIDs];
GO
CREATE PROCEDURE [dbo].[addFiguresByROFstIDandImageIDs]
(
@ROFstID int,
@ImageIDs varchar(max)
)
WITH EXECUTE AS OWNER
AS
BEGIN TRY -- Try Block
BEGIN TRANSACTION
INSERT INTO [Figures]
( [ROFstID]
,[ImageID]
,[Config]
,[DTS]
,[UserID]
)
select distinct FF.ROFstID, II.ID ImageID, '' Config, FF.DTS, FF.UserID from ROFsts FF
, vefn_SplitInt(@ImageIDs,',') II
where ROFstID=@ROFstID
SELECT [FigureID]
,[ROFstID]
,[ImageID]
,[Config]
,[DTS]
,[UserID]
,[LastChanged]
FROM [Figures]
WHERE [ROFstID]=@ROFstID
IF( @@TRANCOUNT > 0 ) COMMIT
END TRY
BEGIN CATCH -- Catch Block
IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level
ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback
EXEC vlnErrorHandler
END CATCH
GO
-- Display the status of Proc creation
IF (@@Error = 0) PRINT 'Procedure Creation: addFiguresByROFstIDandImageIDs Succeeded'
ELSE PRINT 'Procedure Creation: addFiguresByROFstIDandImageIDs Error on Creation'
GO
/****** Object: StoredProcedure [addFolder] ******/
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addFolder]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
DROP PROCEDURE [addFolder];
@ -4288,7 +4335,7 @@ AS
FROM Items where CONTENTID in (SELECT ContentID
FROM DROUsages DR
JOIN Entries EE on EE.DocID = DR.DocID
where RODbID = @RODbID AND SUBSTRING(ROID,1,12) = SUBSTRING(@ROID,1,12))
where RODbID = @RODbID AND ROID = @ROID)
END
SELECT
[DROUsages].[DROUsageID],
@ -4344,7 +4391,7 @@ AS
INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID])
SELECT ItemID, @typeID,'Referenced Object (' + @RODesc + ') ' + @Command,@UserID
FROM Items where CONTENTID in (SELECT ContentID FROM ROUSAGES
where RODbID = @RODbID AND SUBSTRING(ROID,1,12) = SUBSTRING(@ROID,1,12))
where RODbID = @RODbID AND ROID = @ROID)
END
SELECT
[RoUsages].[ROUsageID],
@ -6043,6 +6090,45 @@ IF (@@Error = 0) PRINT 'Procedure Creation: getDROUsagesByRODbID Succeeded'
ELSE PRINT 'Procedure Creation: getDROUsagesByRODbID Error on Creation'
GO
/****** Object: StoredProcedure [getDRoUsagesByROIDs] ******/
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getDRoUsagesByROIDs]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
DROP PROCEDURE [getDRoUsagesByROIDs];
GO
CREATE PROCEDURE [dbo].[getDRoUsagesByROIDs]
(
@ROIDs nvarchar(MAX)
)
WITH EXECUTE AS OWNER
AS
SELECT
[DROUsages].[DROUsageID],
[DROUsages].[DocID],
[DROUsages].[ROID],
[DROUsages].[Config],
[DROUsages].[DTS],
[DROUsages].[UserID],
[DROUsages].[LastChanged],
[DROUsages].[RODbID],
[Documents].[LibTitle] [Document_LibTitle],
[Documents].[DocContent] [Document_DocContent],
[Documents].[DocAscii] [Document_DocAscii],
[Documents].[Config] [Document_Config],
[Documents].[DTS] [Document_DTS],
[Documents].[UserID] [Document_UserID],
[Documents].[FileExtension] [Document_FileExtension]
FROM [DRoUsages]
JOIN vefn_SplitROSearch(@ROIDs) SS
ON [DRoUsages].RODBID = SS.[RODBID] and [DRoUsages].[ROID] like SS.[ROID] + '%'
JOIN [Documents] ON
[Documents].[DocID]=[DROUsages].[DocID]
RETURN
GO
-- Display the status of Proc creation
IF (@@Error = 0) PRINT 'Procedure Creation: getDRoUsagesByROIDs Succeeded'
ELSE PRINT 'Procedure Creation: getDRoUsagesByROIDs Error on Creation'
GO
/****** Object: StoredProcedure [getEntries] ******/
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getEntries]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
DROP PROCEDURE [getEntries];
@ -6191,6 +6277,7 @@ AS
TT.[FromID],
TT.[ToID],
TT.[RangeID],
TT.[IsRange],
TT.[TranType],
TT.[Config],
TT.[DTS],
@ -7568,6 +7655,36 @@ IF (@@Error = 0) PRINT 'Procedure Creation: getJustRODb Succeeded'
ELSE PRINT 'Procedure Creation: getJustRODb Error on Creation'
GO
/****** Object: StoredProcedure [getJustROFst] ******/
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getJustROFst]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
DROP PROCEDURE [getJustROFst];
GO
CREATE PROCEDURE [dbo].[getJustROFst]
(
@ROFstID int
)
WITH EXECUTE AS OWNER
AS
SELECT
[ROFstID],
[RODbID],
[ROLookup],
[Config],
[DTS],
[UserID],
[LastChanged],
(SELECT COUNT(*) FROM [Associations] WHERE [Associations].[ROFstID]=[ROFsts].[ROFstID]) [AssociationCount],
(SELECT COUNT(*) FROM [Figures] WHERE [Figures].[ROFstID]=[ROFsts].[ROFstID]) [FigureCount]
FROM [ROFsts]
WHERE [ROFstID]=@ROFstID
RETURN
GO
-- Display the status of Proc creation
IF (@@Error = 0) PRINT 'Procedure Creation: getJustROFst Succeeded'
ELSE PRINT 'Procedure Creation: getJustROFst Error on Creation'
GO
/****** Object: StoredProcedure [getLibraryDocuments] ******/
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getLibraryDocuments]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
DROP PROCEDURE [getLibraryDocuments];
@ -8806,6 +8923,42 @@ IF (@@Error = 0) PRINT 'Procedure Creation: getROImagesByRODbID Succeeded'
ELSE PRINT 'Procedure Creation: getROImagesByRODbID Error on Creation'
GO
/****** Object: StoredProcedure [getROImagesByRODbIDNoData] ******/
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getROImagesByRODbIDNoData]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
DROP PROCEDURE [getROImagesByRODbIDNoData];
GO
/*
This is used to quickly retrieve ROImages without their data for the ROFst Update process
*/
Create PROCEDURE [dbo].[getROImagesByRODbIDNoData]
(
@RODbID int
)
WITH EXECUTE AS OWNER
AS
SELECT
[ROImages].[ImageID],
[ROImages].[RODbID],
[ROImages].[FileName],
null [Content],
[ROImages].[Config],
[ROImages].[DTS],
[ROImages].[UserID],
[ROImages].[LastChanged],
(SELECT COUNT(*) FROM [Figures] WHERE [Figures].[ImageID]=[ROImages].[ImageID]) [FigureCount]
FROM [ROImages]
WHERE
[ROImages].[RODbID]=@RODbID
RETURN
GO
-- Display the status of Proc creation
IF (@@Error = 0) PRINT 'Procedure Creation: getROImagesByRODbIDNoData Succeeded'
ELSE PRINT 'Procedure Creation: getROImagesByRODbIDNoData Error on Creation'
GO
/****** Object: StoredProcedure [getRole] ******/
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getRole]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
DROP PROCEDURE [getRole];
@ -9082,6 +9235,49 @@ IF (@@Error = 0) PRINT 'Procedure Creation: getRoUsagesByRODbID Succeeded'
ELSE PRINT 'Procedure Creation: getRoUsagesByRODbID Error on Creation'
GO
/****** Object: StoredProcedure [getRoUsagesByROIDs] ******/
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getRoUsagesByROIDs]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
DROP PROCEDURE [getRoUsagesByROIDs];
GO
/*
findRoUsagesByROIDs 1,'1:000100000406,000200000229,00020000022A,00020000022B,0002000005F7,0002000005F9,0002000005FA,0002000005FB,000200000623,000200000626,000200000155,00020000018C,00020000018D,00020000022F,000200000230,00020000019E,000200000677,000200000678,000200000684,000D000000CA0042,000D000000CA0043,000D0000064A0042,000D000006600042,000D000006600043,000D000006670042,000D000006670043,000D000006680042,000D000006680043,000D0000067D0041,000D0000067D0042,000D0000067D0043,000D000006850042,000D000006850043,000D000009140042,000D000009140043,000D00000A320042,000D00000A360042,000D00000A500042,000D00000A500043,000D00000A630042,000D00000A630043,0010000022400041,0010000022400042,0010000022400043,001000002AE60042,001000002AE60043,001000003D8B0042,001000003D8B0043,001000003D8C0042,001000003D8C0043,0010000058AB0042,0010000058AB0043,0010000086550042,0010000086550043,001000009B550041,001000009B550042,001000009C1C0041,001000009C1C0042,001000009C1D0041,001000009C1D0042,001000009C1E0041,001000009C1E0042,001000009C1F0041,001000009C1F0042,001000009C200041,001000009C200042,001000009C210041,001000009C210042,001000009C220041,001000009C220042,001000009C230041,001000009C230042,001000009C240041,001000009C240042,001000009C250041,001000009C250042,001000009C260041,001000009C260042,00100000546E0042,00100000546E0043,001000009B900041,001000009B900042,001000009B910041,001000009B910042,001000009B920041,001000009B920042,001000009B930041,001000009B930042,001000009B940041,001000009B940042,001000009B950041,001000009B950042,001000009B960041,001000009B960042,001000009B970041,001000009B970042,001000009B980041,001000009B980042,001000009B990041,001000009B990042,001000009C270041,001000009C270042,001000009C280041,001000009C280042,001000009C290041,001000009C290042,001000009C2A0041,001000009C2A0042,001000009C2B0041,001000009C2B0042,001000009C2C0041,001000009C2C0042,00110000027E0042,00110000027E0043,00150000216A,001500002367,00150000236C,0015000029B7,001500000392,00150000039E,0015000021C7,0015000021E6,001500002261,001500002265,001500002266,001500002297,001500002754,001500002756,0015000004F4,001500002766,001500002546,001500002643,001500002645,001500002646,00150000266A,00150000266B,00150000266C,00150000266D,00150000266E,00150000266F,001500002670,001500002671,0015000026AA,001500000720'
*/
CREATE PROCEDURE [dbo].[getRoUsagesByROIDs]
(
@ROIDs nvarchar(MAX)
)
WITH EXECUTE AS OWNER
AS
SELECT
[RoUsages].[ROUsageID],
[RoUsages].[ContentID],
[RoUsages].[ROID],
[RoUsages].[Config],
[RoUsages].[DTS],
[RoUsages].[UserID],
[RoUsages].[LastChanged],
[RoUsages].[RODbID],
[Contents].[Number] [Content_Number],
[Contents].[Text] [Content_Text],
[Contents].[Type] [Content_Type],
[Contents].[FormatID] [Content_FormatID],
[Contents].[Config] [Content_Config],
[Contents].[DTS] [Content_DTS],
[Contents].[UserID] [Content_UserID]
FROM [RoUsages]
JOIN vefn_SplitROSearch(@ROIDs) SS
ON [RoUsages].RODBID = SS.[RODBID] and [RoUsages].[ROID] like SS.[ROID] + '%'
JOIN [Contents] ON
[Contents].[ContentID]=[RoUsages].[ContentID]
RETURN
GO
-- Display the status of Proc creation
IF (@@Error = 0) PRINT 'Procedure Creation: getRoUsagesByROIDs Succeeded'
ELSE PRINT 'Procedure Creation: getRoUsagesByROIDs Error on Creation'
GO
/****** Object: StoredProcedure [getTopFolder] ******/
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getTopFolder]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
DROP PROCEDURE [getTopFolder];