在更新同一表中的记录时从表中选择记录

时间:2015-09-23 07:48:29

标签: sql sql-server

我有触发器,它不断更新我的SQL Server 2014表中的记录。 同时我从该表中选择记录。即使表只包含50条记录,选择查询查询也需要很长时间。

请建议能让我获得更快结果的东西。

3 个答案:

答案 0 :(得分:1)

尝试使用一些表提示来获取没有锁定表的数据。 msdn.microsoft.com/en-us/library/ms187373%28v=sql.120%29.aspx

SELECT field FROM table (nolock)

答案 1 :(得分:0)

由于在没有确切细节的情况下回答问题并不简单,所以您可以考虑以下几点:

您是否总是从表中读取所有行,或者是否有可以编入索引的where子句并且会减少锁定?

您是在更新表中的所有行,还是更新还可以使用索引?

更新过程触发器是否涉及更大的事务?这个更新是否可以在事务结束时移动,以某种方式与持久操作等分开,以便表锁更快?

您是否看过锁定,实际被锁定的页面以及当时正在执行的流程是什么,还是有几个不同的进程在执行更大的阻塞链?它是行级锁定还是整个表都被锁定了?

我只会使用其他答案建议的(nolock)提示作为最后的手段,当你完全确定你理解它的含义时。这不仅仅是让事情变得更快的事情。

答案 2 :(得分:-1)

试试这个

Select Name,--Fields-- from table_name with (NOLOCK)