# Benchmark Node trackers
* Timing is in Milliseconds
* Sql request in staging are not logged in the console
## SearchNodeTrackersInStock
```csharp=
this.Query
.Include(tracker => tracker.Snapshot)
.Where(
tracker => tracker.Snapshot.StockId == stockId
&& tracker.NextVersionId == null
&& tracker.Snapshot.Status == Core.Enums.StockSnapshotStatus.COMMITED)
.Include(tracker => tracker.Node)
.OrderBy(tracker => tracker.Node.Name);
```
#### Dev
``` SQL
SELECT [n].[Id], [n].[CreationTime], [n].[CreatorUserId], [n].[DeleterUserId], [n].[DeletionTime], [n].[IsDeleted], [n].[LastModificationTime], [n].[LastModifierUserId], [n].[NextVersionId], [n].[NodeId], [n].[PrevVersionId], [n].[SnapshotId], [s].[Id], [s].[CreationTime], [s].[CreatorUserId], [s].[LastModificationTime], [s].[LastModifierUserId], [s].[NextSnapshotId], [s].[PrevSnapshotId], [s].[Status], [s].[StockId], [s].[TriggerRunId], [d].[Id], [d].[BlobName], [d].[CreationTime], [d].[CreatorUserId], [d].[LastModificationTime], [d].[LastModifierUserId], [d].[Name], [d].[RunId], [d].[Size], [d].[Status]
FROM [NodeTrackers] AS [n]
INNER JOIN [StockSnapshots] AS [s] ON [n].[SnapshotId] = [s].[Id]
INNER JOIN [DataNodes] AS [d] ON [n].[NodeId] = [d].[Id]
WHERE ([n].[IsDeleted] = CAST(0 AS bit)) AND ((([s].[StockId] = @__stockId_0) AND ([n].[NextVersionId] IS NULL)) AND ([s].[Status] = 3))
ORDER BY [d].[Name]
OFFSET @__p_1 ROWS FETCH NEXT @__p_2 ROWS ONLY
```
* Time: 104
#### Staging
* Time: 996
## SearchNodeTrackersInSnapshot
### Specification Version
```csharp=
this.Query
.Where(tracker => tracker.SnapshotId == snapshotId)
.Include(tracker => tracker.Node)
.OrderBy(tracker => tracker.Node.Name);
```
#### Dev
``` SQL
SELECT [n].[Id], [n].[CreationTime], [n].[CreatorUserId], [n].[DeleterUserId], [n].[DeletionTime], [n].[IsDeleted], [n].[LastModificationTime], [n].[LastModifierUserId], [n].[NextVersionId], [n].[NodeId], [n].[PrevVersionId], [n].[SnapshotId], [d].[Id], [d].[BlobName], [d].[CreationTime], [d].[CreatorUserId], [d].[LastModificationTime], [d].[LastModifierUserId], [d].[Name], [d].[RunId], [d].[Size], [d].[Status]
FROM [NodeTrackers] AS [n]
INNER JOIN [DataNodes] AS [d] ON [n].[NodeId] = [d].[Id]
WHERE ([n].[IsDeleted] = CAST(0 AS bit)) AND ([n].[SnapshotId] = @__snapshotId_0)
ORDER BY [d].[Name]
OFFSET @__p_1 ROWS FETCH NEXT @__p_2 ROWS ONLY
```
* Time: 169
#### Staging
* Time: 3902
### LinQ Version
```csharp
IQueryable<NodeTrackerQueryResponse> tmp = from tracker in this._dbContext.NodeTrackers
where tracker.SnapshotId == snapshotId
join node in this._dbContext.DataNodes
on tracker.NodeId equals node.Id
orderby node.Name
select new NodeTrackerQueryResponse { Tracker = tracker, Node = new() };
```
#### Dev
``` SQL
SELECT [n].[Id], [n].[CreationTime], [n].[CreatorUserId], [n].[DeleterUserId], [n].[DeletionTime], [n].[IsDeleted], [n].[LastModificationTime], [n].[LastModifierUserId], [n].[NextVersionId], [n].[NodeId], [n].[PrevVersionId], [n].[SnapshotId]
FROM [NodeTrackers] AS [n]
INNER JOIN [DataNodes] AS [d] ON [n].[NodeId] = [d].[Id]
WHERE ([n].[IsDeleted] = CAST(0 AS bit)) AND ([n].[SnapshotId] = @__snapshotId_0)
ORDER BY [d].[Name]
OFFSET @__p_1 ROWS FETCH NEXT @__p_2 ROWS ONLY
```
* Time: 64
#### Staging
* Time: 2235