如何针对枚举器优化此查询:
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 中对此进行优化。