How to Include Query Timings


  • When making a query, you can request to get detailed stats of the time spent by RaveDB on each part of the query. i.e. duration of the search, loading documents, transforming results, etc.

  • By default, getting the timings in queries is turned off.

  • To get the query timings include a call to Timings.

  • In this page:


Include timings in query

// Define an object that will receive the query timings
QueryTimings timings = null;

var results = session.Query<Product>()
    // Use the Customize method to Call Timings, provide an out param for the timings results
    .Customize(x => x.Timings(out timings))
    // Define query criteria
    // i.e. search for docs containing Syrup -or- Lager in their Name field
    .Search(x => x.Name, "Syrup Lager")
    // Execute the query
    .ToList();

// Get total query duration:
var totalQueryDuration = timings.DurationInMs;

// Get specific parts duration: 
IDictionary<string, QueryTimings> timingsDictionary = timings.Timings;
var optimizerDuration = timingsDictionary["Optimizer"].DurationInMs;
// Define an object that will receive the query timings
QueryTimings timings = null;

var results = await asyncSession.Query<Product>()
    // Use the Customize method to Call Timings, provide an out param for the timings results
    .Customize(x => x.Timings(out timings))
    // Define the search criteria
    // Search for docs containing Syrup -or- Lager in their Name field
    .Search(x => x.Name, "Syrup Lager")
    // Execute the query
    .ToListAsync();

// Get total query duration:
var totalQueryDuration = timings.DurationInMs;

// Get specific parts duration: 
IDictionary<string, QueryTimings> timingsDictionary = timings.Timings;
var optimizerDuration = timingsDictionary["Optimizer"].DurationInMs;
var results = session.Advanced.DocumentQuery<Product>()
    // Call Timings, provide an out param for the timings results
    .Timings(out QueryTimings timings)
    // Define query criteria
    // i.e. search for docs containing Syrup -or- Lager in their Name field
    .Search(x => x.Name, "Syrup Lager")
    // Execute the query
    .ToList();

// Get total query duration:
var totalQueryDuration = timings.DurationInMs;

// Get specific parts duration: 
IDictionary<string, QueryTimings> timingsDictionary = timings.Timings;
var optimizerDuration = timingsDictionary["Optimizer"].DurationInMs;
var results = await asyncSession.Advanced.AsyncDocumentQuery<Product>()
    // Call Timings, provide an out param for the timings results
    .Timings(out QueryTimings timings)
     // Define the search criteria
     // Search for docs containing Syrup -or- Lager in their Name field
    .Search(x => x.Name, "Syrup Lager")
     // Execute the query
    .ToListAsync();

// Get total query duration:
var totalQueryDuration = timings.DurationInMs;

// Get specific parts duration: 
IDictionary<string, QueryTimings> timingsDictionary = timings.Timings;
var optimizerDuration = timingsDictionary["Optimizer"].DurationInMs;
from Products
where search(Name, 'Syrup') or search(Name, 'Lager')
include timings()

View timings

  • The detailed timings can be viewed from the Query view in the Studio.
  • Running a query with include Timings() will show an additional Timings Tab
    with a graphical representation of the time spent in each query part.
Figure 1. Include timings graphical results

Include timings results

Syntax

IDocumentQuery<T> Timings(out QueryTimings timings);
Parameters Data type Description
timings QueryTimings An out param that will be filled with the timings results
QueryTimings
DurationInMs long Total duration
Timings IDictionary<string, QueryTimings> Dictionary with QueryTimings info per time part