我一直在寻找在SQL Server的一些提示和技巧查询Opitimization 2008查询优化技巧
我来到了防空火炮低于我不是很确定是什么使用视图/ triggies的后果
- 尝试更换与原始源表视图
- 触发器不应该被尽可能使用,结合触发的逻辑在存储 过程
有人可以阐明这些解释优点和缺点,也可以指出我的查询优化的一般提示和技巧列表。
我一直在寻找在SQL Server的一些提示和技巧查询Opitimization 2008查询优化技巧
我来到了防空火炮低于我不是很确定是什么使用视图/ triggies的后果
有人可以阐明这些解释优点和缺点,也可以指出我的查询优化的一般提示和技巧列表。
视图是由查询形成的虚拟表,例如'SELECT a,b FROM tableC'这创建了一个& b的'虚拟表'。源表是其自身的表,并且能够'SELECT * FROM tableC'以便不创建虚拟表的能力高得多。
触发器是在发生指定事件(例如特定查询)时触发的事件。存储过程是编译的事务,并且可以像触发器一样运行,除非它们效率更高。总之,不要使用触发器。
对于虚拟表答案。数据库设计应该是这样的:查询通常需要从返回的每一行的给定源列返回的所有信息。因此,如果您有一个查询只从表格中选择某些列,那么您的模式效率不高。 – David
我不同意视图是“虚拟表”。但@大卫我不确定我遵循你的逻辑。因此,如果我有一个OrderDetails表,并且使用查询来获取尚未发货的订单所需的产品x单位总数,则我的模式是垃圾,因为我的查询没有查看单价栏,这与我目前正在运行的查询无关? –
你会使用'SELECT COUNT(unit)FROM OrderDetails'这样的查询,并且由于count没有仅返回一个“行列表”,所以没有创建虚表,所以不,你的模式是在这种情况下不是垃圾。如果您正在运行'SELECT unit FROM OrderDetails',然后使用其他函数进行计数,那么您正在创建一个虚拟表,并且效率不高。 – David
我的问题不明智吗?还是那个投下的选手是如此天才,以至于他不明白在问什么?至少在投票时发表评论;所以其他人可以理解你最新是什么,或者在问题 – Sreedhar
中有什么问题。或许他们觉得你的问题根据[StackOverflow FAQ](http://stackoverflow.com/faq#questions)是不恰当的。这不是一个具体问题,而是一个开放式讨论的邀请。无论如何,我没有以任何方式投票。 – HABO