数据表自增Id获取时IDENTITY的正确使用方式
摘要:在SQLServer中很多表主键会设置为自增列,有的业务需求需要知道新插入的自增Id是多少,一般我们会用SELECT @@IDENTITY来获取,可由于@@IDENTITY是个全局变量作用据较大,所以在高并发的时候会返回其他表插入的Id导致逻辑错误。 在SQLServer中有三个不同作用域的自增列返
阅读全文
SQLServer中SQL语句与可执行二进制语句
摘要:SQLServer可以执行正常SQL语句也可以执行被转换的二进制语句,一般会用此方法进行数据库注入操作,骗过基本的字符过滤
阅读全文
C#分布式事务解决方案-TransactionScope
摘要:1、先添加System.Transactions的引用(需要添加Net程序集) C#调用时的代码如下: 对此分布式事务类讲解的很清晰的blogs地址:http://www.cnblogs.com/artech/archive/2010/01/31/1660356.html 2、设置web服务器及sq
阅读全文
Sql语句varchar或nvarchar字段条件前加N的性能差异
摘要:Sql语句varchar或nvarchar字段条件前加N的话是对这个字段进行Unicode编码, 这样做的目的是避免在这种字段中存入俄文、韩文、日文的情况下有可能会出现乱码。 但这样做也会有性能问题,举例如下: SELECT * FROM UserInfo WHERE Name = N'taiyon
阅读全文
EXISTS/NOT EXISTS CASE WHEN等使用方法
摘要:--简单判断用法 SELECT 1 WHERE EXISTS (SELECT * FROM cpay..System_Setting) --可以替换count SELECT COUNT(1) FROM cpay..System_Setting USE YSB_PayDB --1 练习NOT EXISTS的用法 --(Exists使用心得:1、先查目标表的全部;2、再用Exists关联目标表过...
阅读全文
学习如何看懂SQL Server执行计划——基本知识篇
摘要:一、基本概念 1.数据的读取 页(page)是SQL SERVER可以读写的最小I/O单位。即使只需访问一行,也要把整个页加载到缓存之中,再从缓存中读取数据。物理读取是从磁盘上读取,逻辑读取是从缓存中读取。物理读取一页的开销要比逻辑读取一页的要大得多。 SET STATISTICS IO ON --
阅读全文
SQL Server 锁机制 悲观锁 乐观锁 实测解析
摘要:先引入一些概念,直接Copy其他Blogs中的,我就不单独写了。 一、为什么会有锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 1.丢失更新 A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统 2.脏读 A用户修改了数据,随后B用户又读出
阅读全文
通用存储过程(增、删、改、查询分页)
摘要:IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[Proc_Util_Page]') AND OBJECTPROPERTY(id, N'IsProcedure') = 1)DROP PROCEDURE dbo.Proc_U
阅读全文
SQL中游标的用法
摘要:游标:是用来对表从上下每行循环取值,将值连接成为字符串.例子:对 pubs 数据库的dbo.titles 表。1.取得表中的总价格:select sum(price) from dbo.titles2.但是我想得到这样一个结果:书名,价格。精通ASP,39元;学习vc++,28元;JAVA编程,23
阅读全文
学习如何看懂SQL Server执行计划(一)——数据查询篇
摘要:一、数据查询部分 1、 看到执行计划有两种方式,对sql语句按Ctrl+L,或按Ctrl+M打开显示执行计划窗口每次执行sql都会显示出相应的执行计划 2、 执行计划的图表是从右向左看的 3、 SQL Server有几种方式查找数据记录 [Table Scan] 表扫描(最慢),对表记录逐行进行检查
阅读全文
SQL监测语句
摘要:SELECT top 20 qs.creation_time,last_execution_time,total_physical_reads,total_logical_reads,total_logical_writes,DB_NAME(dbid) dbname, execution_count
阅读全文
常见SQL分页方式效率比较
摘要:结一下。 1.创建测试环境,(插入100万条数据大概耗时5分钟)。 2.几种典型的分页sql,下面例子是每页50条,198*50=9900,取第199页数据。 3.分别在1万,10万(取1990页),100(取19900页)记录集下测试。 测试sql: 1万:基本感觉不到差异。 10万: 100万:
阅读全文