有桌子TAB_A
:
ID | Date | Value
--------------------------------
101 | 2014-03-01 | 101000001
101 | 2014-03-03 | 101000003
101 | 2014-03-06 | 101000006
102 | 2014-03-01 | 102000001
103 | 2014-03-01 | 103000001
Run Code Online (Sandbox Code Playgroud)
而且,例如,另一个表中的这条记录TAB_B
:
ID | Date | TAB_A.Id
-----------------------------------
40002 | 2014-03-05 | 101
Run Code Online (Sandbox Code Playgroud)
我需要得到最近(最近)TAB_A.Value
到TAB_B.Date
现场(在这种情况下是"101000003"而不是"101000006").
我一直在寻找类似场景的其他回复(比如这个),但这并不是我需要的.
有什么建议?在此先感谢您的帮助.
编辑:我忘了提到它TAB_A
有超过200K的记录,并TAB_B
有超过55M的记录.
我需要在C#应用程序上同时逐行读取四个非常大(> 2 Gb)的文件.我正在使用四种不同的StreamReader
对象及其ReadLine()
方法.同时从四个文件中读取线条时性能受到严重影响,但是每个文件到达EoF时都会变得更好(有4个文件的性能<带3个文件的性能<带有2个文件的性能......).
我有这个(简化,假设只有两个文件,更简洁的例子)代码:
StreamReader readerOne = new StreamReader(@"C:\temp\file1.txt");
StreamReader readerTwo = new StreamReader(@"C:\temp\file2.txt");
while(readerOne.Peek() >= 0 || readerTwo.Peek() >= 0)
{
string[] readerOneFields = readerOne.Peek() >= 0 ?
readerOne.ReadLine().Split(',') : null;
string[] readerTwoFields = readerTwo.Peek() >= 0 ?
readerTwo.ReadLine().Split(',') : null;
if (readerOneFields != null && readerTwoFields != null)
{
if (readerOneFields[2] == readerTwoFields[2])
{
// Do some boring things...
}
else if (readerOneFields != null)
{
// ...
}
else …
Run Code Online (Sandbox Code Playgroud)