管理的Esent - 更快速的数据读取方式?

时间:2017-03-23 15:54:54

标签: c# managed jet esent

使用Managed Esent接口从表中读取数据。我用(伪):

这样做
List<ColumnInfo> columns; //Three columns to be read

using (var table = Table(session,DBID,"tablename",OpenTableGrbit.Readonly))
{
    while (Api.TryMoveNext(session, table))
    {
        foreach (ColumnInfo col in columns)
        {
            string data = GetFormattedColumnData(session,table,col);
        }
    }
}

我只对三列数据感兴趣,大约有4,000行。但是,表本身是1,800,000行。因此,这种方法读取我想要的数据非常慢,因为我需要读取所有1,800,000行。有更快的方法吗?

1 个答案:

答案 0 :(得分:0)

你可以做很多事情。以下是我头脑中的一些事情:

  • 设置最小缓存大小SystemParameters.CacheSizeMin。默认的缓存大小调整算法有时候有点保守。
  • 打开表格时也设置OpenTableGrbit.Squential。这对预取有一点帮助。
  • 使用Api.RetrieveColumns一次检索三个值。这减少了您将要执行的呼叫/密码的数量。

-Martin