随笔分类 - 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()函数的分组排序功能使这种操作变得非常简单。
阅读全文
表变量和临时表
摘要:表变量存储在内存中,而临时表存储在tempdb中,会涉及到物理IO读写,那么我们是否可以由此得出结论,使用表变量要比使用临时表效率高呢?相信有一部分人会和我有同样的想法,使用表变量的效率高,真是如此吗?先从一次优化存储过程的经历说起。
阅读全文
网站访问量大+数据量大=>看似简单的SQL语句也会搞挂系统
摘要:一个简单的SQL语句:select count(1) from tableName with(nolock) where columnA=A and columnB=B and columnC=C,被一个关键页面调用,虽然加了Memcache缓存,但由于数据结构设计问题,造成了数据库服务器CPU负载高达100%,关键页面响应超时,造成极其不好的影响。 究其原因,缺少索引,数据结构设计之初,没有为该...
阅读全文
结合TOP N和Row_Number()分页因Order by排序规则不同引起的bug
摘要:SQL Server 2005的Row_Number() over(order by)排序和where后的order by排序产生的排序规则并不完全相同,我们不能简单的将二者等同起来,结合在一起使用可能会造成意想不到的bug。
阅读全文
拼接SQL造成的意想不到的后果
摘要:执行SQL语句采用拼接字符串的形式,减运算符和负号连在一起成了SQL的注释符号,把更新时的where条件给注释掉了,真是一个危险的操作!
阅读全文
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 表复制语句了。
阅读全文
利用带关联子查询Update语句更新数据
摘要:Update是T-sql中再简单不过的语句了,update table set column=expression [where condition],我们都会用到。但update的用法不仅于此,真正在开发的时候,灵活恰当地使用update可以达到事半功倍的效果。
阅读全文