员工将通过网站从服务器读取数据(整行)。
它们要读取的数据(行)是很多连接涉及10个以上表的结果。
问题:
1。我应该创建并刷新一个包含要读取的end-resulta数据的新表,所以在表示层我们只需从表中选择前1位?
2。或者我应该执行Select ...以及一系列连接,乘法等以获得那一行?
我将要从这开始,我必须管理的第一个想法是用数据构建一个新的大表,但是这个问题突然出现,因为我正在通过表格进行规范化,并建立新的一会导致数据冗余。
不得不说,所需的产品是为员工网页尽快访问数据(这就是为什么我开始考虑创建和刷新新表)
感谢。
修改
人们将访问该网站约300(可能是未来1k)。他们将查询这一行,做他们必须做的事情然后点击OK然后他们得到一个新行(猜测它将在查询和查询之间2分钟)。我们不希望发生的事情是:员工将一直受到指导,其中一个指导因素是他们连续工作的时间(客户我必须说)。因此,如果查询花费的时间太长(每次刷新之间的间隔时间为“太长”),那么我必须构建一种新方法来考虑这一点。当然,我不愿意。编辑2
一旦他们点击OK,另一个查询会触发更新DataBase中的数据,然后触发原始查询,以便将另一行发送到网页。
答案 0 :(得分:1)
必须说所需的产品是为员工网页尽快访问数据
为什么它必须尽可能快?如果它在0.1秒内运行,那还不够快吗?
是因为您在循环中运行查询吗?如果是这样,那么我建议您更改策略以批量获取数据,而不是一次获取一行。
如果您确实需要它以任何原因尽可能快,那么是的,准备好预先计算的结果将比从原始数据源进行查询更快。填充表是实现此目的的一种方法。另一种方法是使用缓存机制,以便第一次请求缓慢,但对相同数据的重复请求将更快。
请注意,预先计算结果或使用缓存会提高性能,但在原始数据发生变化时可能会出现过时数据问题。
答案 1 :(得分:1)
我首先从常规视图开始,只有当我遇到性能问题时,我才能实现它(索引视图或手动创建新表并用数据填充它)。
答案 2 :(得分:1)
我希望有一个规范化的数据库并运行潜在的更昂贵的查询,而不是使用非规范化数据和更快的查询。我认为第二种情况可能会遇到维护/可读性问题,不仅是为了确保您的缓存表是最新的,而且必须编写所有这些数据的核心,以便考虑这些情况。
如果它被大量访问,您可能希望在客户端上实现缓存,检索此数据(asp.net?)以防止不必要的调用。