假设我有以下三个表和一个在线视图 使用后端存储应用程序:
T_Customers
cusId
cusName
cusPhone
T_Orders
cusId
orderId
T_OrderItems
orderId
itemName
itemPrice
V_All
cusId
cusName
orderId
itemName
itemPrice
在此数据的相应视图中,有4个相应的视图。 现在假设我对前三个表中的一个进行了修改。 视图会变脏。我将不得不完全刷新它 每次用户标记后导航到它 脏。这似乎非常低效,请记住 第一个表,一旦我更新名称,我可以简单地获取 从mysql数据库中受影响的行并刷新它 用户界面,无需刷新所有内容。 想象一下,在视图中获取所有内容的速度有多慢 将成为前三个表中包含的内容 每行1000多行。
我如何解决这个效率问题?
答案 0 :(得分:2)
我对你使用“视图”一词感到困惑。我不确定你是指MVC中的视图还是数据库中的视图。
无论哪种方式,我都把你的问题读作......我有一个观点,即汇总/加入一些数据,当只有一小段数据发生变化时会发生什么?当只有部分数据发生变化时,为什么还要付出代价才能重新加载所有数据?
我同意一遍又一遍地重新运行视图效率不高。你有没有调查过缓存?
在UI和数据库层之间,我将介绍一个存储键/值对的缓存。然后,一旦视图变脏,您可以主动使缓存中的项目到期 - 或者只是给它一个生存时间(TTL)并让它自己过期。