随笔分类 -  SQL Server

T-sql,Trigger,Stored Procedures,性能调优
巧用row_number和partition by分组取top数据
摘要:分组取TOP数据是T-SQL中的常用查询, 如学生信息管理系统中取出每个学科前3名的学生。这种查询在SQL Server 2005之前,写起来很繁琐,需要用到临时表关联查询才能取到。SQL Server 2005后之后,引入了row_number()函数,row_number()函数的分组排序功能使这种操作变得非常简单。 阅读全文
posted @ 2011-10-30 10:06 陈晨 阅读(3557) 评论(2) 推荐(2) 编辑
表变量和临时表
摘要:表变量存储在内存中,而临时表存储在tempdb中,会涉及到物理IO读写,那么我们是否可以由此得出结论,使用表变量要比使用临时表效率高呢?相信有一部分人会和我有同样的想法,使用表变量的效率高,真是如此吗?先从一次优化存储过程的经历说起。 阅读全文
posted @ 2010-11-14 11:43 陈晨 阅读(11175) 评论(0) 推荐(3) 编辑
网站访问量大+数据量大=>看似简单的SQL语句也会搞挂系统
摘要:一个简单的SQL语句:select count(1) from tableName with(nolock) where columnA=A and columnB=B and columnC=C,被一个关键页面调用,虽然加了Memcache缓存,但由于数据结构设计问题,造成了数据库服务器CPU负载高达100%,关键页面响应超时,造成极其不好的影响。 究其原因,缺少索引,数据结构设计之初,没有为该... 阅读全文
posted @ 2010-11-02 08:05 陈晨 阅读(2236) 评论(3) 推荐(0) 编辑
结合TOP N和Row_Number()分页因Order by排序规则不同引起的bug
摘要:SQL Server 2005的Row_Number() over(order by)排序和where后的order by排序产生的排序规则并不完全相同,我们不能简单的将二者等同起来,结合在一起使用可能会造成意想不到的bug。 阅读全文
posted @ 2010-06-22 00:07 陈晨 阅读(3530) 评论(7) 推荐(0) 编辑
拼接SQL造成的意想不到的后果
摘要:执行SQL语句采用拼接字符串的形式,减运算符和负号连在一起成了SQL的注释符号,把更新时的where条件给注释掉了,真是一个危险的操作! 阅读全文
posted @ 2009-12-20 12:19 陈晨 阅读(1573) 评论(2) 推荐(1) 编辑
SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
摘要:Insert是T-sql中常用语句,Insert INTO table(field1,field2,...) values(value1,value2,...)这种形式的在应用程序开发中必不可少。但我们在开发、测试过程中,经常会遇到需要表复制的情况,如将一个table1的数据的部分字段复制到table2中,或者将整个table1复制到table2中,这时候我们就要使用SELECT INTO 和 INSERT INTO SELECT 表复制语句了。 阅读全文
posted @ 2008-08-15 08:24 陈晨 阅读(1340388) 评论(64) 推荐(95) 编辑
利用带关联子查询Update语句更新数据
摘要:Update是T-sql中再简单不过的语句了,update table set column=expression [where condition],我们都会用到。但update的用法不仅于此,真正在开发的时候,灵活恰当地使用update可以达到事半功倍的效果。 阅读全文
posted @ 2008-08-13 23:37 陈晨 阅读(27013) 评论(5) 推荐(0) 编辑