2012-07-24 119 views
0

员工正在经历一个网站,从服务器读取数据(一整排)。被他们读选择:哪个运行速度更快?

的数据显示,该行是相当多的连接涉及的东西比10桌以上的结果。

问:

我应该创建并刷新包含最终resulta数据的新表中读取所以在表现层只是我们选择从桌面1?

2.或者我应该执行一个Select ...和一系列的连接,乘法等等来获得这一行吗?


我即将开始这个,我必须admint是建立一个新的大表中的数据的第一个想法,但这个问题弹出因为我通过表被小心关系正常化,并建立新的会导致数据冗余。

不得不说的是,所需的产品是针对员工的网页以最快的速度访问数据越好(这就是为什么起初我以为关于创建和刷新新表)

感谢。


编辑

约300(1K也许在将来)人们将要访问的网站。他们将查询这一行,做他们必须做的事情,然后点击确定,以便他们得到一个新行(猜测在查询和查询之间是2分钟)。我们不希望发生的是:员工是会得到执教的时候,那些教练的因素之一是他们采取的行上(客户端我必须说)的工作时间。因此,如果查询时间过长(每刷新之间数秒内将是“太长”对他们来说),那么我就必须建立以考虑到这个问题的新途径。当然,我宁愿不要。


EDIT 2

一旦点击OK,另一个查询触发更新数据库中的数据,那么原来的查询,以便另一行发送到网页。

+0

我想这取决于.. - 有多少人会进入该网站? - 性能评论家? - 每张表会得到很多信息(建议创建索引)或只是一个 几行? - 你会在将来使用其他信息? (这可能意味着如果你不正常化,你可能会重复 信息) 你应该考虑一些事情之前决定(或提供更多信息) – 2012-07-24 22:50:15

+0

这听起来像你想要建立的是一个索引视图。哪个SQL Server支持。 – 2012-07-24 22:50:38

+0

@MikeChristensen你想建议一个索引视图10 +表?您是否意识到所有能够避免索引视图成为可能的限制,以及即使可能,维护这种视图所涉及的成本也是如此?这不是一个能够将解决方案中的精灵粉尘进行手工扫描的神奇子弹。 :-) – 2012-07-24 22:55:05

回答

1

不得不说的是,所需的产品为员工网页访问数据尽可能快地

为什么一定要尽可能快?如果它在0.1秒内运行,是不是够快?

是不是因为你正在运行在一个循环中查询?如果是这样,那么我建议你改变你的策略来批量获取数据,而不是一次一行。

如果你确实需要的是尽可能快无论出于何种原因,那么是的,有一个预先计算的结果准备会比从原始数据源进行查询的速度更快。填充表格是实现此目的的一种方式。另一种方法是使用缓存机制,这样请求只是第一次缓慢,但对相同数据的重复请求会更快。

请注意,预先计算结果或使用缓存会提高性能,但是当原始数据更改时可能会出现陈旧数据问题。

+0

大约300(未来可能会有1k)人们将访问该网站。他们将查询这一行,做他们必须做的事情,然后点击确定,以便他们得到一个新行(猜测在查询和查询之间是2分钟)。我们不希望发生的是:员工是会得到执教的时候,那些教练的因素之一是他们采取的行上(客户端我必须说)的工作时间。因此,如果查询时间过长(每刷新之间数秒内将是“太长”对他们来说),那么我就必须建立以考虑到这个问题的新途径。 – 2012-07-24 22:52:03

+0

会将此信息添加到问题中,认为它可以提供帮助。 – 2012-07-24 22:52:52

1

我会先从常规视图开始,只有当我遇到性能问题时,才会实现它(索引视图或手动创建新表并使用数据填充它)。

+0

感谢您的方法。 – 2012-07-24 22:59:44

1

我宁愿有一个规范化的数据库,并运行一个可能更昂贵的查询比非规格化数据和更快的查询。我认为第二种情况可能会遇到维护/可读性问题,这不仅是为了确保您的缓存表是最新的,而且还必须针对这些情况编写针对该数据的所有逻辑核心。

如果它被访问了很多,你可能想在客户端检索这个数据(asp.net?)来实现缓存,以防止不必要的调用。

+0

没有考虑客户端缓存(yes .net)。 – 2012-07-24 23:00:25