После поиска в течение нескольких дней ( здесь и здесь ) я считаю, что обнаружил проблему, и похоже, что эта . Однако я сравнил два плана выполнения, чтобы сравнить его, но они кажутся идентичными, за исключением времени выполнения. (Сервер базы данных - SQL SERVER 2000)
Запрос, выполненный в VB6:
EventClass: SQL: BatchCompleted
- ЦП: 31
- Читает: 419
- пишет: 0
- Продолжительность: 390
EventClass: выход из системы аудита (не знаю, полезно ли это)
- CPU: 47
- Читает: 1295
- пишет: 0
- Продолжительность: 920
Запрос, выполненный с помощью .NET (Interop / COM VB6):
EventClass: SQL: BatchCompleted
- CPU: 16
- Читает: 419
- пишет: 0
- Продолжительность: 1906
EventClass: выход из системы аудита (не знаю, полезен ли он)
- CPU: 31
- Читает: 1295
- пишет: 0
- Продолжительность: 4813
Теперь план выполнения записывается с помощью запроса с VB6 AND .NET (сравнение файлов с UltraEdit) между SQL: BatchStarting и SQL: BatchCompleted EventClass:
Table Scan(OBJECT:([Resgu].[dbo].[stsIns] AS [si]), WHERE:([si].[IdEqIns]=NULL AND [si].[StsstsIns]>=0))
Clustered Index Scan(OBJECT:([Resgu].[dbo].[Uge].[pkUge] AS [u]), WHERE:([u].[StsUge]>=Convert([@1])))
Clustered Index Scan(OBJECT:([Resgu].[dbo].[Btt].[pkBtt] AS [b]), WHERE:([b].[StsBtt]>=Convert([@1])))
Compute Scalar(DEFINE:([Expr1001]=Convert([p].[IdEmp])+' - '+[p].[EmpName]+' - '+[p].[PreEmpName]))
|--Clustered Index Scan(OBJECT:([Resgu].[dbo].[Employee].[pkEmployee] AS [p]), WHERE:([p].[StsEmployee]>=0))
Compute Scalar(DEFINE:([Expr1002]=Convert([t].[IdStruct])+' - '+[t].[LblTurn]+' - '+[s].[LblStruct]))
|--Nested Loops(Inner Join, OUTER REFERENCES:([s].[IdStruct]))
|--Clustered Index Scan(OBJECT:([Resgu].[dbo].[Struct].[pkStruct] AS [s]), WHERE:([s].[StsStruct]>=0))
|--Clustered Index Seek(OBJECT:([Resgu].[dbo].[Turn].[pkTurn] AS [t]), SEEK:([t].[IdStruct]=[s].[IdStruct]), WHERE:([t].[StsTurn]>=0) ORDERED FORWARD)
Compute Scalar(DEFINE:([Expr1002]=Convert([t].[IdStruct])+' - '+[t].[LblTurn]+' - '+[s].[LblStruct]))
|--Nested Loops(Inner Join, OUTER REFERENCES:([s].[IdStruct]))
|--Clustered Index Scan(OBJECT:([Resgu].[dbo].[Struct].[pkStruct] AS [s]), WHERE:([s].[StsStruct]>=0))
|--Clustered Index Seek(OBJECT:([Resgu].[dbo].[Turn].[pkTurn] AS [t]), SEEK:([t].[IdStruct]=[s].[IdStruct]), WHERE:([t].[StsTurn]>=0) ORDERED FORWARD)
Compute Scalar(DEFINE:([Expr1001]=Convert([s].[IdSite])+' - '+[s].[LblSite]))
|--Clustered Index Scan(OBJECT:([Resgu].[dbo].[Site].[pkSite] AS [s]), WHERE:([s].[StsSite]>=0))
Clustered Index Scan(OBJECT:([Resgu].[dbo].[MarketType].[pkMarketType] AS [tm]), WHERE:([tm].[StsMarketType]>=Convert([@1])))
Clustered Index Scan(OBJECT:([Resgu].[dbo].[Flow].[pkFlow] AS [f]), WHERE:([f].[CatFlow]<Convert([@2]) AND [f].[StsFlow]>=Convert([@1])))
Table Scan(OBJECT:([Resgu].[dbo].[TypeInst] AS [ti]), WHERE:([ti].[StsTypeInst]>=Convert([@1])))
Clustered Index Scan(OBJECT:([Resgu].[dbo].[WeaSation].[pkWeaSation] AS [sm]), WHERE:([sm].[StsWeaSation]>=Convert([@1])))
Я не специалист по Sql Profiling, поэтому мне не хватает чего-нибудь проверить, но что?
С уважением,
Florian