小编Bob*_*bst的帖子

NOLOCK提示在SELECT语句中的作用

我想真正的问题是:

如果我不关心脏读,将添加with(NOLOCK)提示到SELECT语句会影响性能:

  1. 当前的SELECT语句
  2. 针对给定表的其他事务

例:

Select * 
from aTable with (NOLOCK)
Run Code Online (Sandbox Code Playgroud)

sql sql-server locking

193
推荐指数
4
解决办法
33万
查看次数

更新1.2亿条记录的最快方式

我需要在一个1.2亿记录表中初始化一个值为-1的新字段.

Update table
       set int_field = -1;
Run Code Online (Sandbox Code Playgroud)

我让它运行了5个小时才取消它.

我尝试运行它,事务级别设置为读取未提交的相同结果.

Recovery Model = Simple.
MS SQL Server 2005
Run Code Online (Sandbox Code Playgroud)

如何更快地完成这项工作?

sql sql-server sql-server-2005

44
推荐指数
3
解决办法
12万
查看次数

关于何时使用WITH RECOMPILE选项的经验法则

据我所知,WITH RECOMPILE选项强制优化器重建存储过程的查询计划但是你希望什么时候发生?

关于何时使用WITH RECOMPILE选项以及何时不使用,有哪些经验法则?

将它放在每个sproc上都有什么有效的开销?

sql sql-server options

13
推荐指数
2
解决办法
2万
查看次数

计算该季度的最后一天

计算上一季度最后一天的最有效方法是什么?

示例:给定日期为11/19/2008,我想返回2008年9月30日.

平台是SQL Server

sql sql-server date

7
推荐指数
3
解决办法
3万
查看次数

数据库安全性不那么安全

某些高度敏感的信息(付款信息,用户名,密码等)应该加密后才能保存到我的数据库中.

之后,必须解密该信息,以便从持久性中获取并在以后使用.

如果我使用AES256加密帐单地址,我仍然需要在持久性中存储AES256密钥/密码.

如果加密进入数据库的信息背后的重点是保护该信息,以防有人攻击我的数据库,并且我存储密钥以解密数据库中的相同信息,那么加密数据的重点是什么首先?

如果有人侵入我的数据库,他们将能够找到持久密钥并解密他们想要的任何加密数据.

我在这里错过了什么吗?

database encryption e-commerce

5
推荐指数
1
解决办法
84
查看次数

带有无效查询的数据库表损坏:它做了什么并将回滚?

我犯了错误,运行应该对我的事实表(200M行)进行快速更新:

update dbo.primary_fact
   set count_of_loan_obligors = o.n              
  from dbo.staging_fact f  
       -- notice that this is not the same table as the one in the update clause
       inner join ##Obligor_Count o
       on (f.time_dimension_id = o.time_dimension_id
           and f.account_dimension_id = o.account_dimension_id)
Run Code Online (Sandbox Code Playgroud)

应该是:

  from dbo.primary_fact f
Run Code Online (Sandbox Code Playgroud)

这样一个正确形成的更新(1天,87k账户)通常在一分钟或2分钟结束.运行12分钟后,我想知道这么长时间内发现了我的错误.

我取消了SQL Server Management Studio中的查询,据我所知,它会回滚所有可怕的(有人确认吗?)

但我更大的问题是:错误形成的查询有什么作用?


更新:取消操作最终完成,一小时39分钟后.DBA在杀戮上的速度太慢 - 同样如此.

正确形成的更新在8秒内完成.

第二次更新:在SSMS中成功取消订单后,原始(错误)更新中未设置任何值.我会解释这意味着任何挂起的更新都会被回滚.

sql sql-server data-warehouse

4
推荐指数
1
解决办法
734
查看次数

增加"select top"返回的行会突然变得非常慢

在手动取消之前,在大约2分钟内运行的负载突然变为90分钟运行.

这是一个简单的阴影查询:

select fields
into shadow_table
from table
where date = '8/23/2011'
Run Code Online (Sandbox Code Playgroud)

date 它上面有一个非聚集索引.

如果我将查询更改为选择

  • top 300000 它在2秒内完成
  • top 400000 它在3分钟内运行
  • top 500000 我无聊等待并取消了它

我们的服务器团队在运行时会显示很多自我阻止.

任何人都可以建议可能出现的瓶颈吗?

sql sql-server performance

2
推荐指数
1
解决办法
450
查看次数