Как можно оптимизировать этот запрос для перечислителей:
SELECT * FROM Customers
Table Customers
customerId int - has index on it
customerName, etc
SqlReader, который возвращает набор клиентов, будет считываться по требованию в режиме перечислителя.Несмотря на то, что он может возвращать огромные наборы данных, которые могут медленно считываться / потребляться в цикле foreach, каждый другой запрос к той же таблице сталкивается с большим количеством споров.Как это можно оптимизировать / избежать?Курсоры или выбор во временные таблицы?
Вот пример кода, который вызовет много споров (я его профилировал, и цифры действительно выглядят плохо):
public void DumpCustomers()
{
Thread thread = new Thread(AccessCustomers);
thread.Start();
// GetCustomers returns enumerator with yield return; big # of customers
foreach (Customer customer in GetCustomers())
{
Console.WriteLine(customer.CustomerName);
System.Threading.Thread.Sleep(200);
}
thread.Abort();
}
public void AccessCustomers()
{
while (true)
{
Console.WriteLine(GetCustomer("Zoidberg").CustomerName);
Thread.Sleep(100);
}
}
PS Мне также нужно оптимизировать это в MySQL.