MSSQL网站制作之存储历程交换text,ntext列中的字符串
InnoDB数据表的索引,与InnoDB数据表相比,在InnoDB数据表上,索引对InnoDB数据表的重要性要大得多。在InnoDB数据表上,索引不仅会在搜索数据记录时发挥作用,还是数据行级锁定机制的苊、基础。存储历程|字符串/*author:amjn
date:2003-03-28
version:1.0
function:交换text,ntext列中的字符串(不撑持中文)
*/
declare@ptrvarbinary(16)
declare@amjnIdint
declare@Positionint,@lenint
set@len=datalength(ILOVEHJL)
declarewux_CursorscrollCursor
for
selecttextptr(),fromUSA201
forreadonly
openwux_Cursor
fetchnextfromwux_Cursorinto@ptr,@amjnId
while@@fetch_status=0
begin
select@Position=patindex(%ILOVEHJL%,)fromUSA201where=@amjnId
while@Position>0
begin
set@Position=@Position-1
updatetextUSA201.@ptr@Position@lenilovehjl
select@Position=patindex(%ILOVEHJL%,)fromUSA201where=@amjnId
end
fetchnextfromwux_Cursorinto@ptr,@amjnId
end
closewux_cursor
deallocatewux_cursor
go
上面我们说了DML的闪回方案。但对于DDL却无能为力,对于大多数的DDL,即使是rowbase格式,二进制日志binlog中仍只记录语句本身。对于删表操作,只记录一个语句droptablet。仅凭这句话,无法还原表的数据。 如果是将来做数据库的开发设计,就应该详细学习T-SQL的各种细节,包括T-SQL的程序设计、存储过程、触发器以及具体使用某个开发语言来访问数据库。 两个月啃那本sqlserver2005技术内部-存储引擎,花了几个月啃四本书 可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。 一个是把SQL语句写到客户端,可以使用DataSet进行加工; 你可以简单地认为适合的就是好,不适合就是不好。 这就引发了对varchar和char效率讨论的老问题。到底如何分配varchar的数据,是否会出现大规模的碎片? 外键的级联更能扩展可能大部分的同行在设计OLTP系统的时候都不愿意建立外键,都是通过程序来控制父子数据的完整性。 是否碎片会引发效率问题?这都是需要进一步探讨的东西。varbinary(max)代替image也让SQLServer的字段类型更加简洁统一。
页:
[1]