【发布时间】:2009-08-05 15:26:02
【问题描述】:
我有一个非常大(数百万行)的 SQL 表,它表示名称-值对(一列表示属性名称,另一列表示它的值)。在我的 ASP.NET Web 应用程序中,我必须使用名称列中可用的不同值填充控件。这组值通常不大于 100。很可能在 20 左右。运行查询
从名称值表中选择不同的名称
在这个大表上可能会花费大量时间(即使使用正确的索引等)。我特别不想每次加载这个 web 控件时都支付这个惩罚。
所以缓存这组名称应该是正确的答案。我的问题是,当表中有新名称时如何及时更新集合。我调查了SQL 2005 Query Notification feature。但是该表会经常更新,很少使用实际的新的不同名称字段。通知将一直流入,并且网络服务器可能会浪费更多的时间而不是通过设置节省的时间。
我想找到一种方法来平衡查询数据所用的时间和名称集更新之前的延迟。
关于如何有效管理此缓存的任何想法?
【问题讨论】:
-
是否可以从表中删除不同的名称?如果是这样,我假设您希望您的缓存也反映这一点?
-
现在你知道为什么这是糟糕的数据库设计模式了。
-
我是否正确理解您有一个包含两列(名称、值)的表,并且给定的名称可以有多个值?在所有可用值中,您如何决定使用哪一个?
标签: asp.net sql-server sql-server-2005 caching