MSSQL教程之T-SQL Extractor
Merge将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用/******************************************************************************
*Author:iret
*Desc:T-SQLExtractor
*ExtractthecommentsandblanksandtabsfromtheSQLstatement
*为了对照两个存储历程,大概SQL语句是不是分歧,抽暇写了一个能够删除T-SQL语句中的正文和空格的剧本,挺精巧的模样。
*CreatedDate:2004/10/21
******************************************************************************/
DECLARE@scriptVARCHAR(8000),@extractedScriptVARCHAR(4000)
SET@script=
/*从体系表猎取存储历程的剧本*/
SELECT@script=@script+
FROMsyscomments,sysobjects
WHERE
syscomments.=sysobjects.ANDsysobjects.LIKE%campa_AppSegment
/*标记符*/
DECLARE@InLineCommentedBIT,@InSectionCommentedBIT,@InStringBIT,@positionINT
/*以后字符*/
DECLARE@curCharINT
/*前一个字符*/
DECLARE@preCharINT
SET@InLineCommented=0
SET@InSectionCommented=0
SET@InString=0
SET@extractedScript=
SET@position=1
SET@preChar=null
WHILE@position<=DATALENGTH(@script)
BEGIN
--猎取以后字符
SET@curChar=ASCII(SUBSTRING(@script,@position,1))
IF@preChar=ASCII(/)AND@curChar=ASCII(*)AND@InLineCommented=0AND@InString=0
BEGIN
--SETthesigninsectioncomment
SET@InSectionCommented=1
--popthe/char
SET@extractedScript=substring(@extractedScript,1,len(@extractedScript)-1)
SET@preChar=@curChar
SET@position=@position+1
CONTINUE
END
IF@preChar=ASCII(*)AND@curChar=ASCII(/)AND@InLineCommented=0AND@InString=0
BEGIN
SET@InSectionCommented=0
SET@preChar=@curChar
SET@position=@position+1
CONTINUE
END
IF@preChar=ASCII(-)AND@curChar=ASCII(-)AND@InSectionCommented=0AND@InString=0
BEGIN
SET@InLineCommented=1
--popthe/char
SET@extractedScript=substring(@extractedScript,1,len(@extractedScript)-1)
SET@preChar=@curChar
SET@position=@position+1
CONTINUE
END
IF@curChar=ASCII()AND@InString=0AND@InSectionCommented=0AND@InLineCommented=0
BEGIN
SET@InString=1
END
IF@inString=1AND@curChar=ASCII()
BEGIN
IFASCII(SUBSTRING(@script,@position+1,1))=ASCII()
BEGIN
SET@extractedScript=@extractedScript+
SET@position=@position+1
END
ELSE
BEGIN
SET@InString=0
END
END
IF@InSectionCommented=1
BEGIN
SET@preChar=@curChar
SET@position=@position+1
CONTINUE
END
IF@InLineCommented=1
BEGIN
--ifmeetstheendofthelinesettheInLineCommentedtofalse
IF@curChar=10AND@preChar=13
BEGIN
SET@InLineCommented=0
END
SET@preChar=@curChar
SET@position=@position+1
CONTINUE
END
IF@curChar=ASCII()OR@curChar=10OR@curChar=13OR@curChar=ASCII()OR@curChar=32
BEGIN
SET@preChar=@curChar
SET@position=@position+1
CONTINUE
END
SET@extractedScript=@extractedScript+CHAR(@curChar)
SET@preChar=@curChar
SET@position=@position+1
END
--printtheresultscript
SELECT@extractedScript
如果某个数据列里包含许多重复的值,就算为它建立了索引也不会有很好的效果。比如说,如果某个数据列里包含的净是些诸如“0/1”或“Y/N”等值,就没有必要为它创建一个索引。 呵呵,这就是偶想说的 至于淘汰的问题,只能说在你的项目周期之内,微软应该都不会倒闭。 一个是把SQL语句写到客户端,可以使用DataSet进行加工; 习惯敲命令行的朋友可能会爽一些。但是功能有限。适合机器跑不动SQLServerManagementStudio的朋友使用。 分区表是个亮点!从分区表也能看出微软要做大作强SQLServer的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQLServer2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据和实时数据的处理是很有帮助的。 SP4是一个累积性的ServicePack,包含自以前的ServicePack发布以来所有的修补程序(包括MS03-031安全公告)。 一个百万级别的基本信息表A,一个百万级别的详细记录表B,A中有个身份证id,B中也有身份id;先要找出A中在B的详细记录。
页:
[1]