更新:
按照建议,我会问两个分开的问题,并详细说明。
这可能是一个由两部分组成的问题,也可能是一个常见问题,但我无法弄清楚。
我们有一个 .net Web 服务,它使用实体框架和针对 SQL Server 2012 的代码优先方法(我认为)。我们有几桌有的叫User
,License
,Product
等。
我们不断需要从数据库中获取有关用户、他们的许可证和产品的数据。对于这些数据,我们执行一个相当大的存储过程,该过程访问所有表,进行一些处理并交付数据,例如,具有此用户 ID 的用户拥有与这些产品相关的这些角色的许可证。
然而,这个存储过程的执行似乎随着时间的推移而倒退,并且在白天变得更慢。为了防止这种情况,我们每天早上都会对索引进行优化。
如果不是每天早上都执行优化,则存储过程的执行时间将从 200 毫秒变为 2000 毫秒。
如果有人对正在发生的事情有洞察力,我将不胜感激。我对 SQL 和 SQL Server 的了解有限。
然而,
为了避免有关存储过程的这些问题,我们决定重新考虑我们的策略。现在,我们已经创建了一个新表,其中包含来自其他表的键值,例如 userid、license id、role、productid。但是,这意味着每次更改其他表时,我们都必须维护这个新表。
所以,我的第二部分问题是。是包含我们可以轻松获取有效方法的键值的新表还是我们应该完全做其他事情?
拉丁的传说
白衣染霜花
相关分类