文章分类 -  SQL学习

SQL学习
SQL查询找到数据库死锁的存储过程
摘要:CREATEproceduresp_who_lock asbegindeclare@spid intdeclare@blk intdeclare@countintdeclare@indexintdeclare@lock tinyint set@lock=0 createtable#temp_who_... 阅读全文
posted @ 2014-04-30 16:27 Kelly_HanShuai 阅读(159) 评论(0) 推荐(0)
行转列问题总结
摘要:行转列问题总结1、行转列---1、最简单的行转列/* 问题:假设有张学生成绩表(tb)如下:姓名 课程 分数张三 语文 74张三 数学 83张三 物理 93李四 语文 74李四 数学 84李四 物理 94想变成(得到如下结果): 姓名 语文 数学 物理 李四 74 84 94张三 74 83 93*/--测试用IF OBJECT_ID('[tb]') IS NOT NULL DROP TABLE [tb]GOcreate table tb(姓名 varchar(10) , 课程 varchar(10) , 分数 int)insert into tb values('张三 阅读全文
posted @ 2013-09-17 15:48 Kelly_HanShuai 阅读(82) 评论(0) 推荐(0)
SQL Server数据库优化经验总结
摘要:优化数据库的注意事项:1、关键字段建立索引。2、使用存储过程,它使SQL变得更加灵活和高效。3、备份数据库和清除垃圾数据。4、SQL语句语法的优化。(可以用Sybase的SQL Expert,可惜我没找到unexpired的序列号)5、清理删除日志。SQL语句优化的基本原则:1、使用索引来更快地遍历表。缺省情况下建立的索引是非群集索引,但有时它并不是最佳的。在非群集索引下,数据在物理上随机存放在数据页上。合理的索引设计要建立在对各种查询的分析和预测上。一般来说:①.有大量重复值、且经常有范围查询(between, >,=,< =)和order by、group by发生的列,可考虑 阅读全文
posted @ 2013-09-06 14:20 Kelly_HanShuai 阅读(104) 评论(0) 推荐(0)
SQL性能优化十条经验
摘要:1.查询的模糊匹配尽量避免在一个复杂查询里面使用 LIKE '%parm1%'—— 红色标识位置的百分号会导致相关列的索引无法使用,最好不要用.解决办法:其实只需要对该脚本略做改进,查询速度便会提高近百倍。改进方法如下:a、修改前台程序——把查询条件的供应商名称一栏由原来的文本输入改为下拉列表,用户模糊输入供应商名称时,直接在前台就帮忙定位到具体的供应商,这样在调用后台程序时,这列就可以直接用等于来关联了。b、直接修改后台——根据输入条件,先查出符合条件的供应商,并把相关记录保存在一个临时表里头,然后再用临时表去做复杂关联2.索引问题在做性能跟踪分析过程中,经常发现有不少后台程 阅读全文
posted @ 2013-09-06 14:13 Kelly_HanShuai 阅读(83) 评论(0) 推荐(0)
sql server行转列问题终极解决
摘要:主要应用case语句来解决行转列的问题行转列问题主要分为两类1)简单的行转列问题:示例表:id sid course result1 2005001 语文 80.02 2005001 数学 90.03 2005001 英语 80.04 2005002 语文 56.05 2005002 数学 69.06 2005002 英语 89.0执行select sid,语文=isnull(sum(case course when '语文' then result end),0), 数学=isnull(sum(case course when '数学' then result 阅读全文
posted @ 2013-09-06 10:43 Kelly_HanShuai 阅读(119) 评论(0) 推荐(0)
SQL递归函数
摘要:在数据库设计的时候,经常会遇到树形表结构,如何根据一个节点Id,获取所有子节点的Id列表呢,这需要用到递归,递归函数如下:比如说表Table中主机为Id,通过fatherId关联子节点的。Create function [dbo].[getchildrenId](@id varchar(50))returns varchar(max)begindeclare @ids varchar(max);set @ids='';select @ids =isnull(@ids +',','') +tbchild.Id from table tbfather 阅读全文
posted @ 2013-06-05 19:02 Kelly_HanShuai 阅读(518) 评论(0) 推荐(0)
分割函数
摘要:1、按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果。 CREATEfunction Get_StrArrayLength ( @str varchar(1024), --要分割的字符串 @split varchar(10) --分隔符号 ) returnsintasbegindeclare @location intdeclare @start intdeclare @length intset @str=ltrim(rtrim(@str)) set @location=charindex(@split,@str) set 阅读全文
posted @ 2013-06-05 18:51 Kelly_HanShuai 阅读(170) 评论(0) 推荐(0)