马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
你看出了作者的深度?深处半米!当初是冲那么多的大牛给他写序才买的,后来才发现无啥内容,作者也只是才用几年的新手,百花了几十两银子,再次感叹当今社会的虚伪与浮躁明天写了条Sql查询数据,Sql语句以下:
selectDIDfrom
(
selectDIDfromSys_Dictionarywheredbo.fn_IsDate(left(right(DID,11),8))=1
)A
wheredatediff(d,cast(left(right(A.DID,11),8)asdatetime),getdate())>=0
发明所查询到的了局与本人料想的纷歧样。非常不解,经由过程测试各类分歧的写法,失掉的了局仍是与料想的纷歧样。折腾了一个多小时,终究在Sql中的实行企图中找到了缘故原由。
本来,Sql2005会依据本人的一些划定规矩来优化我们写的Sql语句,在实行企图中能够看到,它是先辈行会萃索引的描实行了datediff(d,cast(left(right(A.DID,11),8)asdatetime),getdate())>=0前提,再经由选择器利用dbo.fn_IsDate(left(right(DID,11),8))=1来选择,如许,经由SqlServer的优化后,以上Sql的实行按次完整反了,失掉的结查固然就是纷歧样了。
以是,假如我们要在Where前提中利用函数,请审慎!上面我们说了DML的闪回方案。但对于DDL却无能为力,对于大多数的DDL,即使是rowbase格式,二进制日志binlog中仍只记录语句本身。对于删表操作,只记录一个语句droptablet。仅凭这句话,无法还原表的数据。 |