gpt4 book ai didi

c# - 从数据表(缓存对象)与数据库中搜索项目

转载 作者:行者123 更新时间:2023-11-30 20:01:04 25 4
gpt4 key购买 nike

目前我有大量数据存储在数据库中。

这组数据(3000条记录)将被用户频繁检索。

目前我正在使用的方法是:

  1. 从数据库中检索这组记录
  2. 转换成数据表
  3. 存储到缓存对象中
  4. 根据查询从这个缓存对象中搜索结果

    CachePostData.Select(string.Format("Name LIKE '%{0}%'", txtItemName.Text));
  5. 将结果绑定(bind)到转发器(每页显示 40 条记录的分页)

但我注意到性能不佳(每个请求大约需要 4 秒)。所以,我想知道有没有更好的方法来做到这一点?或者我应该立即从数据库中检索每个查询的结果?

最佳答案

DataTable.Select 可能不是搜索内存中缓存的最有效方法,但它肯定不会花费 4 秒或类似的时间来搜索 3000 行。

第一步是找出性能瓶颈所在。我敢打赌这与搜索缓存无关,但您可以轻松找到,例如使用类似的代码:

var stopwatch = Stopwatch.StartNew();
var result = CachePostData.Select(string.Format("Name LIKE '%{0}%'", txtItemName.Text));

WriteToLog("Read from cache took {0} ms", stopwatch.Elapsed.TotalMilliseconds);

WriteToLog 跟踪某处(例如 System.Diagnostics.Trace、System.Diagnostics.Debug 或日志框架,如 log4net)。

如果您正在寻找缓存的替代方案,您可以简单地缓存实体对象的通用列表,然后使用 Linq 搜索该列表:

var result = CachePostData.Select(x => x.Name.Contains(txtItemName.Text));

这可能稍微更有效(例如,它不需要解析“NAME LIKE ...”过滤器表达式),但同样,我不认为这是你的瓶颈。

关于c# - 从数据表(缓存对象)与数据库中搜索项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19607237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com