-1

假设我有以下三个表和一个带有后端的在线商店应用程序的视图:

T_Customers
  cusId
  cusName
  cusPhone

T_Orders
  cusId
  orderId

T_OrderItems
  orderId
  itemName
  itemPrice

V_All
  cusId
  cusName
  orderId
  itemName
  itemPrice

在该数据的对应视图中,有 4 个对应视图。现在假设我对前三个表之一进行了修改。视图会变脏。每次用户在它被标记为脏后导航到它时,我都必须完全刷新它。这似乎非常低效,请记住,对于第一个表,一旦我更新了名称,我可以简单地从 mysql 数据库中获取受影响的行并在用户界面上刷新它,而无需刷新所有内容。想象一下,一旦前三个表每个都包含 1000 多行,那么在视图中获取所有内容会变得多么缓慢。

我该如何解决这个效率问题?

4

1 回答 1

2

我对您对“视图”一词的使用感到有些困惑。我不确定您是指 MVC 中的视图还是数据库中的视图。

不管怎样,我把你的问题读成......我有一个聚合/连接一些数据的视图,当只有一小部分数据发生变化时会发生什么?当只有部分数据发生变化时,为什么我要为重新加载所有数据付出代价?

我同意一遍又一遍地重新运行视图效率不高。你研究过缓存吗?

在 UI 和数据库层之间,我将引入一个存储键/值对的缓存。然后,一旦视图变脏,您可以主动使缓存中的项目过期 - 或者只是给它一个生存时间 (TTL) 并让它自行过期。

于 2013-07-08T22:16:16.143 回答