简单生活 发表于 2015-1-16 22:14:16

MYSQL网页设计巧用SQL server一时表

如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍。  SQLserver一时表是常常必要用到的,上面就教您怎样利用SQLserver一时表办理避免用户反复登录成绩,供您参考。
  在我们开辟商务软件的时分,经常会碰到如许的一个成绩:如何避免用户反复登录我们的体系?出格是关于银行或是财政部门,更是要限定用户以其工号身份屡次登进。
  大概会有人说在用户信息表中加一字段判别用户工号登录的形态,登录后写1,加入时写0,且登录时判别其标记位是不是为1,如是则不让该用户工号登录。可是如许那必将会带来新的成绩:如产生象断电之类不成预知的征象,体系长短一般加入,没法将标记地位为0,那末下次以该用户工号登录则不成登进,这该怎样办呢?
  也许我们能够换一下思绪:有甚么器材是在connection断开后能够被体系主动接纳的呢?对了,SQLServer一时表具有这个特征!可是我们这里的这类情形不克不及用部分SQLserver一时表,由于部分一时表关于每个connection来讲都是一个自力的工具,因而只能用全局一时表来到达我们的目标。
  好了,情形已开阔爽朗话了,我们能够写一个象上面如许复杂的存储历程:

createproceduregp_findtemptable/*寻觅以操纵员工号定名的全局一时表*如无则将out参数置为0并创立该表,若有则将out参数置为1*在connection断开毗连后,全局一时表会被SQLServer主动接纳*如产生断电之类的不测,全局一时表固然还存在于tempdb中,可是已得到活性*用object_id函数往判别时会以为其不存在.*/@v_useridvarchar(6),--操纵员工号@i_outintout--输入参数0:没有登录1:已登录asdeclare@v_sqlvarchar(100)ifobject_id(tempdb.dbo.##+@v_userid)isnullbeginset@v_sql=createtable##+@v_userid+(useridvarchar(6))exec(@v_sql)set@i_out=0endelseset@i_out=1  在这个过程当中,我们看到假如以用户工号定名的全局一时表不存在时历程会往创立一张并把out参数置为0,假如已存在则将out参数置为1。
  如许,我们在我们的使用程序中挪用该历程时,假如获得的out参数为1时,我们能够绝不客套地跳出一个message告知用户说”对不起,此工号正被利用!”
<Pstyle="TEXT-INDENT:2em">
DBaaS解决方案既可以解决这些问题,又能为客户节约资金。相反作为解决方案提供商,采用DBaaS模式似乎就并不那么有吸引力了,因为与企业内部署软件的解决方案相比,DBaaS意味着更低的利润。

飘飘悠悠 发表于 2015-1-19 05:49:49

记得在最开始使用2k的时候就要用到这个功能,可惜2k没有,现在有了作解决方案的朋友会很高兴吧。

谁可相欹 发表于 2015-1-25 14:58:23

对于微软系列的东西除了一遍遍尝试还真没有太好的办法

不帅 发表于 2015-2-2 22:35:31

入门没那么困难,精通没那么容易

金色的骷髅 发表于 2015-2-8 17:55:14

Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。

若相依 发表于 2015-3-8 08:58:49

这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。

蒙在股里 发表于 2015-3-22 06:03:54

同样会为索引视图等应用带来麻烦。看看行级和事务级的快照数据放在tempdb中,就能感觉到目前架构的尴尬。
页: [1]
查看完整版本: MYSQL网页设计巧用SQL server一时表