Archive for the ‘MS SQL Server 2005’ Category

今天上csdn,看到有人在炫耀自己所谓的分页算法,呃。。。我觉得算不上是什么算法,就是一种解决方案吧。不过回帖的人好多,在回帖里淘到了不错的东西,发上来记录一下。

1
2
3
4
5
6
7
WITH OrderedOrders AS
(SELECT *,
ROW_NUMBER() OVER (ORDER BY [id])AS RowNumber  –id是用来排序的列
FROM table_info ) –table_info是表名
SELECT *
FROM OrderedOrders
WHERE RowNumber BETWEEN 50 AND 60;

在windows server 2003, sql server 2005 CTP,P4 2.66GHZ,1GB 内存下测试,执行时间0秒 ,表中数据量230万
接下来大批量的数据查询性能瓶颈就在count了,不知道sql server 2005在这方面有没有什么改进.
附另一种方法:

1
2
3
4
SELECT *
FROM (SELECT *,ROW_NUMBER() Over(ORDER BY id) AS rowNum
FROM table_info ) AS myTable
WHERE rowNum BETWEEN 50 AND 60;

一. 概述… 1
二. 并发访问的不利影响… 1
1. 脏读(dirty read)… 1
2. 不可重复读(nonrepeatable read)… 1
3. 幻读(phantom read)… 1
三. 并发访问的控制机制… 2
1. 锁… 2
2. 行版本控制… 2
四. 隔离级别… 2
五. 事务… 3
1. 事务的模式… 3
1.1. 显式事务(Explicit Transactions)… 3
1.2. 自动提交事务(Autocommit Transactions)… 4
1.3. 隐式事务(Implicit Transactions)… 4
2. 事务的编程… 5
2.1. Transact-SQL脚本… 5
2.2. ADO.NET应用程序接口… 5
一. 概述
当多个用户同时访问数据库的同一资源时,叫做并发访问。如果并发的访问中有用户对数据进行修改,很可能就会对其他访问同一资源的用户产生不利的影响。可能产生的并发不利影响有以下几类:脏读、不可重复读和幻读。
为了避免并发访问产生的不利影响,sql server设计有两种并发访问的控制机制:锁、行版本控制。
二. 并发访问的不利影响
并发访问,如果没有并发访问控制机制,可能产生的不利影响有以下几种
1. 脏读(dirty read)
如果一个用户在更新一条记录,这时第二个用户来读取这条更新了的记录,但是第一个用户在更新了记录后又反悔了,不修改了,回滚了刚才的 更新。这样,导致了第二个用户实际上读取到了一条根本就没有存在过的修改后的记录。如果第一个用户在修改记录期间,把所修改的记录锁住,在修改完成前别的 用户读取不到记录,就能避免这种情况。
2. 不可重复读(nonrepeatable read)
第一个用户在一次事务中读取同一记录两次,第一次读取一条记录后,又有第二个用户来访问这条记录,并修改了这条记录,第一个用户第二次 读取这条记录时,得到的是跟第一次不同的数据了。如果第一个用户在两次读取之间锁住要读取的记录,别的用户不能去修改相应的记录就能避免这种情况。
3. 幻读(phantom read)
第一个用户在一次事务中两次读取同样满足条件的一批记录,第一次读取一批记录后,又有第二个用户来访问这个表,并在这个表中插入或者删 除了一些记录,第一个用户第二次以同样条件读取这批记录时,可能得到的结果有些记录是在第一次读取时有,第二次的结果中没有了,或者是第二次读取的结果中 有的记录在第一次读取的结果中没有的。如果第一个用户在两次读取之间锁住要读取的记录,别的用户不能去修改相应的记录,也不能增删记录,就能避免这种情 [...]


关于博主

姓名:郑玏

性别:男

职业:程序员

爱好:KTV、乒乓球、台球、五子棋、围棋、编程

语言:中文、英语、闽南语

Email:

工作技能

  • 桌面语言:C、C++、C#、Java
  • Web语言:PHP、HTML/XHTML、CSS、Javascript
  • Xml相关:XML、XSLT、SCHEMA
  • 数据库相关:Mysql、MS Sql
  • 建模相关:UML
  • 擅长:正则表达式、Web相关语言、Xml相关、C、C++、C#、Mysql

 

2010-09月
« Aug    
 12345
6789101112
13141516171819
20212223242526
27282930  
  • 李鸿萱: 呵呵~~!好好休息吧~~!有空再聊啊~~!(话说,老大是厦大,还是嘉庚的? [...]
  • Jennal: @李鸿萱 哈哈,是啊,校友~ 居然会有校友用我的软件,真是荣幸~我去年 [...]
  • 李鸿萱: 囧,校友?真的假的?那才没建几年呢~~!我现在是大一升大二~~!在读日语 [...]
  • Jennal: @李鸿萱 好巧。。我也在那里上过学。。 [...]
  • 李鸿萱: 呵呵 是吗? 我现在在厦门漳州校区读大学, 正好夹中间~~! 话说,太多 [...]