with nolock
WITH (NOLOCK)相当于未提交读(READ UNCOMMITTED),意思是指定语句可以读取已由其他事务修改单尚未提交的行,在未提交读级别运行的事务,不会发出共享锁来防止其他事务修改当前事务读取的数据,也不会被排它锁阻塞,所以WITH (NOLOCK)可以改善在线大量查询的环境中数据集被LOCK的现象藉此改善查询的效能;
SELECT COUNT(UserID) FROM EMPLOYEE WITH (NOLOCK) JOIN WORKING_GROUP WITH (NOLOCK) ON EMPLOYEE.UserID = WORKING_GROUP.UserID
String与StringBuilder
String 对象是不可改变的。每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵。
如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder 类可以提升性能,当修改 StringBuilder 时,在达到容量之前,它不会为其自己重新分配空间。当达到容量时,将自动分配新的空间且容量翻倍。
StringBuilder的Length属性是非只读的,
如果将Length属性设置为大于Capacity属性的值,则自动将Capacity属性更改为与Length 属性相同的值。如果将Length 属性设置为小于当前StringBuilder 对象内的字符串长度的值,则会缩短该字符串。
T-SQL 批处理
批处理是作为一个逻辑单元的T-SQL语句。如果一条语句不能通过语法分析,那么不会运行任何语句。如果一条语句在运行时失败,那么产生错误的语句之前的语句都已经运行了。
- GO语句必须自成一行,只有注释可以再同一行上。
- 每个批处理单独发送到服务器。
- GO语句不是T-SQL命令,而是由各种SQL Server命令实用程序(如:Management Studio中的"查询"窗口)识别的命令。
批处理常被用在某些事情不得不放在前面发生,或者不得不和其它事情分开的脚本中(一般ddl语句在同一个批处理里只能提交一个)
USE Test ALTER TABLE TestTable ADD col3 int INSERT INTO TestTable (col1,col2,col3) VALUES (1,1,1)
以上代码在查询分析器中提示col3列不存在,通过一个go解决问题
USE Test ALTER TABLE TestTable ADD col3 int GO INSERT INTO TestTable (col1,col2,col3) VALUES (1,1,1)