Как этот запрос может быть оптимизированы для счетчиков:Оптимизация SQL Select для счетчиков
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);
}
}
P.S. Мне также нужно будет оптимизировать это в MySQL.
Есть ли способ фильтровать результаты, используя ГДЕ? Если вы выбираете всю таблицу, не имеет значения, что у customerId есть индекс. Возможно, вам следует реализовать какой-то пейджинг/выборку? – dotariel
согласен, это не имеет значения. я не могу фильтровать что-либо с предложением WHERE, вся таблица должна быть сброшена – kateroh
Можете ли вы уточнить, что вы намерены делать с этим большим набором данных? – dotariel