小编Sur*_*ish的帖子

交易隔离级别范围

SQL Server 2005中事务隔离级别的作用域规则是什么?我知道不同级别的含义,但不知道如何在手动运行的脚本之外正确应用它们.我找不到生产质量代码中实际使用的指南.

显然,当你使用这样的命令时,范围就开始了:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 
Run Code Online (Sandbox Code Playgroud)

但它在哪里结束?如果我在存储过程中设置iso级别然后该proc调用另一个,嵌套的proc是否继承它?更好的是,如果我升级嵌套proc中的iso级别,它是否会进入调用proc?像BEGIN TRAN,ROLLBACK和COMMIT这样的事务命令会有什么不同吗?

当应用程序或代理程序作业调用存储过程时,隔离级别更改是否会以某种方式持续存在?我是否总是必须在每个过程结束时恢复默认的READ COMMITTED?

我会在不同的情况下测试它,但我不知道如何读取当前隔离级别设置的内容.

t-sql sql-server sql-server-2005 isolation-level

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

使用NULL查询性能

我想知道NULL值如何影响SQL Server 2005中的查询性能.

我有一个类似于这个(简化)的表:

ID | ImportantData | QuickPickOrder
--------------------------
1  | 'Some Text'   | NULL
2  | 'Other Text'  | 3
3  | 'abcdefg'     | NULL
4  | 'whatever'    | 4
5  | 'it is'       | 2
6  | 'technically' | NULL
7  | 'a varchar'   | NULL
8  | 'of course'   | 1
9  | 'but that'    | NULL
10 | 'is not'      | NULL
11 | 'important'   | 5
Run Code Online (Sandbox Code Playgroud)

而我正在对它进行查询,如下所示:

SELECT   *
FROM     MyTable
WHERE    QuickPickOrder IS …
Run Code Online (Sandbox Code Playgroud)

sql database sql-server performance

3
推荐指数
1
解决办法
6006
查看次数

SQL Server:日志表中的索引日期列

示例表:

CREATE TABLE Log (
    logID    int identity
    logDate  datetime
    logText  varchar(42)
)
Run Code Online (Sandbox Code Playgroud)

logID已经编入索引,因为它是主键,但如果您要查询此表,则可能需要使用logDate作为约束.但是,logID和logDate的顺序相同,因为logDate总是设置为GETDATE().

在logDate上放置一个额外的非聚集索引是否有意义,考虑到对于Log表,快速写入很重要.

sql-server indexing logging sql-server-2005

3
推荐指数
1
解决办法
2926
查看次数