随笔分类 -  mssql

摘要:1、首先要搞明白什么叫执行计划? 执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语句如果用来从一个10万条记录的表中查1条记录,那查询优化器会选择“索引查找”方式,如果该表进行了归档,当前只剩下5000条记录了,那查询优化器就会改变方案,采用“全表扫描”方式。 可见,执行计划并不是固定的,它是“个性化的”。产生一个正确的“执行计划”有两点很重要: (1) SQL语句是否清晰地告诉查询优化器它想干什么? (2) 查询优化器得到的数据库统计信息是否是最新的、正确的? 2、统一SQL语句的写法 对于以下两句SQL语句,程序员认 阅读全文
posted @ 2011-06-09 14:01 qanholas 阅读(557) 评论(0) 推荐(0) 编辑
摘要:在SQL Server 2005下自带的函数HashBytes() ,此函数是微软在SQL Server 2005中提供的,可以用来计算一个字符串的MD5和SHA1值,使用方法如下:--获取123456的MD5加密串select hashbytes('MD5', '123456') ;--获取123456的SHA1加密串select hashbytes('SHA1', '123456') ;有了这个函数可以在SQL Server中为字符串进行加密,但是HashBytes() 函数的返回结果是VarBinary类型(以 0x 开头 阅读全文
posted @ 2011-06-09 13:52 qanholas 阅读(14843) 评论(1) 推荐(2) 编辑
摘要:"D:\Program Files\VM\vmware-vdiskmanager.exe" -c -s 1000Mb -a lsilogic -t 2 "D:\Quorum.vmdk""D:\Program Files\VM\vmware-vdiskmanager.exe" -c -s 10Gb -a lsilogic -t 2 "D:\ShareDisk.vmdk"disk.locking = "false"diskLib.dataCacheMaxSize = "0"scs 阅读全文
posted @ 2011-06-01 19:25 qanholas 阅读(763) 评论(0) 推荐(0) 编辑
摘要:--droptabletestCREATETABLEtest(idINT,groupnameVARCHAR(20),NAMEVARCHAR(20),gageint)INSERTINTOtestSELECT1,'中国','刘德华',34unionSELECT2,'越南','周杰伦',3unionSELECT3,'美国','周星驰',34unionSELECT4,'韩国','刘玛丽',43unionSELECT56,'日本','刘结婚',4 阅读全文
posted @ 2011-05-10 14:16 qanholas 阅读(356) 评论(0) 推荐(0) 编辑
摘要:(selecttop5000idfromtable)(注明:table是表名,id是表的索引列)解决了selecttop速度慢的问题,实现高效分页查询!当用selecttop10*fromtablewhereidnotin(selecttop5000idfromtable)这个语句时,单是查询5000行后的10行,速度慢的惊人,要是数字更大的话,可能会卡死,下面这个终于解决了这个烦人的问题,如下:select*from(SELECTtop10*FROM(selecttop5000*fromt_people)orderbyiddesc)orderbyid;思路是:先selecttop5000,, 阅读全文
posted @ 2011-05-08 20:31 qanholas 阅读(1101) 评论(1) 推荐(0) 编辑
摘要:MSSQL分页方式说明:目前我所知的有以下几种方式临时表表变量in,notinSETROWCOUNTCTEid>,id<优缺点分析:性能最低,可操作性差第一种方式和第二种方实际上是比较类似的.优点:排序方式比较随意缺点:第一种方式有大量的IO开销.第二种方式则会开销内存,但当表数据量比较大的时候性能会直线下降.所以这两种方式都不适合做大数据量的分页.第三种方式:性能次之,可操作较差优点:排序方式比较随意缺点:资源开销比较大,数据库会承担不小的运算压力,所以也不适合做大表分页.第四种方式:性能平均,可操作性尚可优点:排序相对比较随意,各分页情况下速度平均,属于不是最快也不是最慢.缺点 阅读全文
posted @ 2011-05-08 17:18 qanholas 阅读(717) 评论(0) 推荐(1) 编辑
摘要:写程序的人,往往需要分析所写的SQL语句是否已经优化过了,服务器的响应时间有多快,这个时候就需要用到SQL的STATISTICS状态值来查看了。 通过设置STATISTICS我们可以查看执行SQL时的系统情况。选项有PROFILE,IO ,TIME。介绍如下: SET STATISTICS PROFILE ON:显示分析、编译和执行查询所需的时间(以毫秒为单位)。 SET STATISTICS IO ON:报告与语句内引用的每个表的扫描数、逻辑读取数(在高速缓存中访问的页数)和物理读取数(访问磁盘的次数)有关的信息。 SET STATISTICS TIME ON:显示每个查询执行后的结果集,代 阅读全文
posted @ 2011-05-06 09:50 qanholas 阅读(57732) 评论(6) 推荐(10) 编辑
摘要:SELECT * INTO 采购入库调整FROM OPENROWSET( 'MICROSOFT.JET.OLEDB.4.0', 'Excel 8.0;IMEX=1;HDR=YES;DATABASE=d:\中药材出入库调整明细.xls', [采购入库调整$] ) 阅读全文
posted @ 2011-04-19 11:58 qanholas 阅读(308) 评论(0) 推荐(0) 编辑
摘要:CREATEDATABASEtestUSEtestGOCREATETABLE[dbo].[tb]([id][int]IDENTITY(1,1)NOTNULL,[v][varchar](50)COLLATEChinese_PRC_CI_ASNULL)ON[PRIMARY]GOCREATEPROC[dbo].[getMyData]ASSELECTID,VFROMtbGOCREATEPROC[dbo].[getMyDataByID](@idINT)ASSELECTID,VFROMtbWHEREID=@IDGOCREATEENDPOINTmyTestPointSTATE=STARTEDASHTTP(P 阅读全文
posted @ 2011-01-03 18:47 qanholas 阅读(409) 评论(0) 推荐(0) 编辑
摘要:表内容如下 ----------------------------- ID LogTime 1 2008/10/10 10:00:00 1 2008/10/10 10:03:00 1 2008/10/10 10:09:00 2     2008/10/10 10:10:00 2     2008/10/10 10:11:00 -----------------------------如何查询登陆时间间隔不超过5分钟的所有记录CREATETABLE#t(idINT,LogTimeDATETIME)INSERTINTO#tSELECT1,'2008/10/1010:00:00'UNIONSELE 阅读全文
posted @ 2010-12-31 18:09 qanholas 阅读(1211) 评论(0) 推荐(0) 编辑
摘要:有表TestCREATETABLEtest(datedatetime,type1VARCHAR(2),type2VARCHAR(2),account1INT,account2INT)-----------------------------------datetype1type2account1account22010-02-21A1B112142010-02-21A1B212192010-02-21A1B114192010-02-21A2B315122010-02-21A2B117142010-02-21A3B218142010-02-21A2B11211一条语句查询出----------- 阅读全文
posted @ 2010-12-31 13:25 qanholas 阅读(425) 评论(0) 推荐(0) 编辑
摘要:在开发过程中,经常会遇到使用表变量和本地临时表的情况。下面是对二者的一个介绍:1.为什么要使用表变量表变量是从2000开始引入的,微软认为与本地临时表相比,表变量具有如下优点:a.与其他变量的定义一样,表变量具有良好的定义范围,并会被自动清除;b.在存储过程中使用表变量会减少存储过程重新编译的发生;c.表变量需要更少的锁请求和日志资源;d.可以在表变量上使用UDF,UDDT,XML。2.表变量的限制与临时表相比,表变量存在着如下缺点:a.在表变量上没有统计信息,查询优化器根据固定的预估值来选择执行计划,在数据很多的情况下,会导致查询优化器选择很差的执行计划;b.不能直接在表变量上创建索引,但可 阅读全文
posted @ 2010-12-15 10:09 qanholas 阅读(227) 评论(0) 推荐(0) 编辑
摘要:/*题目如何产生1万个编号,插入到表T(colvarchar(20))中,并且不能重复,编号只能从26个小写字母中取.*/--1.当时的写法select'a'ascolinto#tunionselect'b'unionselect'c'unionselect'd'unionselect'e'unionselect'f'unionselect'g'unionselect'h'unionselect'... 阅读全文
posted @ 2010-11-25 23:27 qanholas 阅读(7326) 评论(20) 推荐(5) 编辑
摘要:--创建表并填充数据createtableb_dist(idint,namevarchar(20),deptvarchar(20))insertintob_distvalues(1,‘abc‘,‘sales‘)insertintob_distvalues(2,‘abc‘,‘sales‘)insertin... 阅读全文
posted @ 2010-11-25 21:28 qanholas 阅读(417) 评论(0) 推荐(0) 编辑
摘要:USE[qanholas]GO/******对象:SqlAssembly[qanholas]脚本日期:11/19/201022:47:48******/CREATEASSEMBLY[qanholas]AUTHORIZATION[dbo]FROM0x4D5A90000300000004000000FFFF0000B8000000000000004000000000000000000000000000... 阅读全文
posted @ 2010-11-19 22:53 qanholas 阅读(753) 评论(0) 推荐(0) 编辑
摘要:--开启clr exec sp_configure 'show advanced options', '1' ; go reconfigure ; go exec sp_configure 'clr enabled', '1' go reconfigure ; exec sp_configure 'show advanced options', '1' ; go --创建cctv新用户,sa不行 create login [cctv] with password=N'123456', 阅读全文
posted @ 2010-11-19 22:20 qanholas 阅读(603) 评论(0) 推荐(0) 编辑
摘要:CREATETABLEtb4039(c1INTIDENTITY,c2CHAR(4035)NOTNULL)CREATETABLEtb4040(c1INTIDENTITY,c2CHAR(4036)NOTNULL)DECLARE@iINTSET@i=1WHILE@i<=100BEGININSERTINTOtb4039(c2)VALUES('test'+CONVERT(VARCHAR(5),@i))... 阅读全文
posted @ 2010-11-10 23:39 qanholas 阅读(331) 评论(0) 推荐(0) 编辑
摘要:CREATETABLE#temp(nameVARCHAR(20),jobVARCHAR(20),ageINT,COUNTINT)INSERT#tempSELECT'周杰伦','歌手',25,2010UNIONALLSELECT'周杰伦','歌手',26,1444INSERT#tempSELECT'刘德华','演员',40,1101UNIONALLSELECT'刘德华','演员',45,4664IN... 阅读全文
posted @ 2010-11-10 23:11 qanholas 阅读(248) 评论(0) 推荐(0) 编辑
摘要:useMASTERdeclare@spidintdeclareCURcursorforselectspidfromsysprocesseswheredbid=(selectdbidfromsysdatabaseswherename='ycmis')opencurfetchnextfromCURinto@spidwhile@@FETCH_STATUS=0beginexec('KILL'+@spid)... 阅读全文
posted @ 2010-11-10 23:03 qanholas 阅读(454) 评论(1) 推荐(0) 编辑
摘要:selecttop1000*from费用表where费用ID<any(selecttop10(费用id)from费用表orderby费用IDasc)selecttop1000*from费用表where费用ID>all(selecttop10(费用id)from费用表orderby费用IDasc)selecttop1000*from费用表where费用ID<some(selectt... 阅读全文
posted @ 2010-11-10 22:24 qanholas 阅读(171) 评论(0) 推荐(0) 编辑