仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 566|回复: 7
打印 上一主题 下一主题

[学习教程] MSSQL教程之有用的存储历程之二

[复制链接]
冷月葬花魂 该用户已被删除
跳转到指定楼层
#
发表于 2015-1-16 22:27:52 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
MySQL的海豚标志的名字叫“sakila”,它是由MySQLAB的创始人从用户在“海豚命名”的竞赛中建议的大量的名字表中选出的。获胜的名字是由来自非洲斯威士兰的开源软件开发者AmbroseTwebaze提供。存储历程有用的存储历程之二
笔者事情的公司接纳的是SQLServer数据库,天天都要处置大批的数据,因为笔者进公司的工夫对照晚,公司现有的年夜部分的程序都是之前的程序员留下的,由于他们没有相干的文档,笔者关于背景数据库的良多表的布局和数据都不甚懂得,给一样平常的保护形成了很年夜的贫苦。

在对背景数据库举行研讨的过程当中,我必要失掉数据库的某些相干信息,好比,公司的数据库中有几个表寄存笔者的团体材料,像人事表、人为表、部门表等等,但详细是哪些表,就不是很分明了,假如要一个一个表地找,大概天亮了也找不完,以是我决意做一个通用的存储历程,能对以后数据库一切字符型字段举行遍历,找出准确婚配含有要查找字符串的表和字段,而且排列出来。好比,人事表的Name字段,人为表的Salary_Name字段,部门表的Employe_Name字段都有笔者的名字,我但愿能把这些找出来。存储历程以下:

IFEXISTS(SELECTnameFROMsysobjects

WHEREname=searchnameANDtype=P)

DROPPROCEDUREsearchname

Go

createproceduresearchname@snamevarchar(10)

As

begin

createtable#TableList(

tablenamechar(200),

colnamechar(200)

)



declare@tablevarchar(200)

declare@colvarchar(200)



setnocounton

declarecurTabscrollcursorforselectnamefromsysobjectswherextype=u

opencurTab

fetchnextfromcurTabinto@table

while@@FETCH_STATUS=0

begin

declarecurColscrollcursorforselectnamefromsyscolumnswhere(xtype=175orxtype=167)and(idin(selectidfromsysobjectswherename=@table))

opencurCol

fetchnextfromcurColinto@col

while@@FETCH_STATUS=0

begin

execute(insertinto#TableListselect+@table+,+@col+from+@table+where+@col+=+@sname+)

fetchnextfromcurColinto@col

end

closecurCol

deallocatecurCol

fetchnextfromcurTabinto@table

end

closecurTab

deallocatecurTab

setnocountoff

selectdistinct*from#TableList

droptable#tablelist

end

挪用很复杂,如想找笔者的名字,挪用SearchName‘forgot2000’便可,查找速率视乎以后数据库的巨细而定。但愿这个存储历程能对人人有所匡助吧。自己E-mail:coolforgot@sina.com,QQ:33563255,但愿能跟人人配合交换,感谢!

本存储历程在SQLServer7.0/2000下经由过程。


如果某个数据列里包含许多重复的值,就算为它建立了索引也不会有很好的效果。比如说,如果某个数据列里包含的净是些诸如“0/1”或“Y/N”等值,就没有必要为它创建一个索引。
灵魂腐蚀 该用户已被删除
7#
发表于 2015-3-21 04:37:33 | 只看该作者
再开发调试阶段和OLAP环境中,外键是可以建立的。新版本中加入了SETNULL和SETDEFAULT属性,能够提供能好的级联设置。
老尸 该用户已被删除
6#
发表于 2015-3-14 10:51:03 | 只看该作者
groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。
飘飘悠悠 该用户已被删除
5#
发表于 2015-3-7 03:39:20 | 只看该作者
这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。
变相怪杰 该用户已被删除
地板
发表于 2015-2-22 22:01:18 | 只看该作者
无法深入到数据库系统层面去了解和探究
再见西城 该用户已被删除
板凳
发表于 2015-2-7 18:14:37 | 只看该作者
多加的系统视图和实时系统信息这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。
再现理想 该用户已被删除
沙发
发表于 2015-2-2 10:48:03 | 只看该作者
这就引发了对varchar和char效率讨论的老问题。到底如何分配varchar的数据,是否会出现大规模的碎片?
透明 该用户已被删除
楼主
发表于 2015-1-24 16:26:42 | 只看该作者
我们学到了什么?思考问题的时候从表的角度来思考问
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2025-1-10 18:18

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表