У меня есть пример для тестирования времени query
в RavenDB
.Поэтому я использую Linq
до query
и StopWatch
для получения времени.
Но когда я запускаю свой код, время кажется слишком длинным (это 2401 ms
), поэтому я пытаюсь выполнить запрос по Ranven Studio
, и в результате время просто принимает 1 ms
.Я не знаю, почему это так сильно отличается.
Ps: В моей базе данных есть 200 000 документов, и для этого у меня есть indexes
, конечно.
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Threading.Tasks;
using Raven.Client.Documents;
using Raven.Client.Documents.BulkInsert;
namespace ConsoleApplication6
{
public class Customer
{
public string Id { get; set; }
public string Name { get; set; }
}
public class SupportCall
{
public string Id { get; set; }
public int Cost { get; set; }
public string CustomerId { get; set; }
public DateTime StartDay { get; set; }
public DateTime EndDay { get; set; }
public string Issue { get; set; }
}
internal class Program
{
private static char[] _buffer = new char[6];
private static string RandomName(Random rand)
{
_buffer[0] = (char)rand.Next(65, 91);
for (int i = 1; i < 6; i++)
{
_buffer[i] = (char)rand.Next(97, 123);
}
return new string(_buffer);
}
static void Main(string[] args)
{
using (var store = new DocumentStore
{
Urls = new[] { "http://localhost:8080" },
Database = "Test"
}.Initialize())
{
using (var session = store.OpenSession())
{
var sp = Stopwatch.StartNew();
SupportCall supportCall = session.Query<SupportCall>()
.Include<SupportCall>(s => s.CustomerId)
.Where(s => s.Cost == 21821).FirstOrDefault();
Customer customer = session.Load<Customer>(supportCall.CustomerId);
sp.Stop();
Console.WriteLine(sp.ElapsedMilliseconds);
}
Console.ReadKey();
}
}
}
}