diff --git a/Service.EDMIService/Scheduler/DatatableJob.vb b/Service.EDMIService/Scheduler/DatatableJob.vb index 8a09c2d5..934ffffa 100644 --- a/Service.EDMIService/Scheduler/DatatableJob.vb +++ b/Service.EDMIService/Scheduler/DatatableJob.vb @@ -36,6 +36,7 @@ Public Class DatatableJob Dim oConnectionId As Integer = NotNull(oRow.Item("CON_ID"), String.Empty) Dim oTitle As String = NotNull(oRow.Item("TITLE"), String.Empty) Dim oSQL As String = NotNull(oRow.Item("COMMAND"), String.Empty) + Dim oIndexColumns As String = NotNull(oRow.Item("INDEX_COLUMNS"), String.Empty) Try oLogger.Debug("Running Command-Job [{0}]", oTitle) @@ -46,10 +47,22 @@ Public Class DatatableJob Dim oTable = oMSSQL.GetDatatableWithConnection(oSQL, oConnectionString, COMMAND_SQL_TIMEOUT) oTable.TableName = oDatatableName + + Dim oView As DataView = Nothing + + ' This creates an Index for the columns specified in INDEX_COLUMNS to speed up calls to 'Table.Select'! + If oIndexColumns <> String.Empty Then + oLogger.Debug("Adding indexes for Table: [{0}]", oIndexColumns) + oView = New DataView(oTable) With { + .Sort = oIndexColumns + } + End If + oLogger.Debug("Result Datatable [{0}] contains [{1}] rows", oTable.TableName, oTable.Rows.Count) Dim oResultTable = New JobResult.ResultTable() With { .Table = oTable, + .View = oView, .DetailRow = oRow } diff --git a/Service.EDMIService/Scheduler/JobResult.vb b/Service.EDMIService/Scheduler/JobResult.vb index a9736f69..8f40cafd 100644 --- a/Service.EDMIService/Scheduler/JobResult.vb +++ b/Service.EDMIService/Scheduler/JobResult.vb @@ -3,6 +3,7 @@ Public Class ResultTable Public Table As DataTable + Public View As DataView Public ChildTable As DataTable Public TableRelationColumn As String Public ChildRelationColumn As String