首页 > 代码库 > 小知识储备
小知识储备
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)
JavaScript 注入攻击
参考链接
小知识储备