-
理解SQLSERVER中的逻辑读,预读和物理读
SQLSERVER数据存储的形式 在谈到几种不同的读取方式之前,首先要理解SQLSERVER数据存储的方式.SQLSERVER存储的最小单位为页(Page).每一页大小为8k,SQLSERVER对于页的读取是原子性,要么读完一页,要么完全不读,不会有中间状态。而页之间的数据组织结构为B树(请参考我之前的博文).所以SQLSERVER对于逻辑读,预读,和物理读的单位是页. SQLSERVER一页的总大小为:8K 但是这一页存储的数据会是:8K=8192字节-96字节(页头)-36字节(行偏移)=8060字节 所以每一页用于存储的实际大小为8060字节. 比如上面AdventureWorks中的Person.Address表,通过SSMS看到这个...
数据库操作教程 2022-09-23 17:25:09 -
深入SQLSERVER合并相关操作Union,Except,Intersect的详解
对于结果集有几个处理,值得讲解一下1.并集(union,Unionall)这个很简单,是把两个结果集水平合并起来。例如SELECT*FROMAUNIONSELECT*FROMB【注意】union会删除重复值,也就是说A和B中重复的行,最终只会出现一次,而unionall则会保留重复行...
数据库操作教程 2022-09-23 17:25:01 -
sqlserver对字段的添加修改删除、以及字段的说明
复制代码代码如下:--新增表字段ALTERprocedure[dbo].[sp_Web_TableFiled_Insert](@TableNamevarchar(100),@FieldNamevarchar(100),@FieldExplainvarchar(200),@DataTypevarchar(100),@ConnectTableNamevarchar(100),@FieldLengthint,@NewsIDintoutput)asbegintransactionmytrandeclare@errorSumintifnotexists(SELECT*FROMsyscolumnswhereid=object_id(@TableName)ANDname=@FieldName)begininserttb_TableField(TableName,FieldName,FieldExplain,DataType,ConnectTableName,FieldLength,UserSetSign)values(@TableName,@FieldName,@FieldExplain,@Data...
数据库操作教程 2022-09-23 17:24:52 -
sqlserver数据库最大Id冲突问题解决方法之一
复制代码代码如下:CREATETABLE[dbo].[TbGuidTable]([TableName][varchar](50)NOTNULL,[KeyName][varchar](20)NOTNULL,[KeyValue][varchar](100)NOTNULL)ON[PRIMARY]GOifexists(select*fromdbo...
数据库操作教程 2022-09-23 17:24:48 -
深入SQLServer中定长char(n)与变长varchar(n)的区别详解
char(n)是定长格式,格式为char(n)的字段固定占用n个字符宽度,如果实际存放的数据长度超过n将被截取多出部分,如果长度小于n就用空字符填充。varchar(n)是变长格式,这种格式的字段根据实际数据长度分配空间,不浪费对于的空间,但是搜索数据的速度会麻烦一点...
数据库操作教程 2022-09-23 17:24:42 -
SQLServer提取数字、提取英文、提取中文的sql语句
--SQL判断字段值是否有中文createfunctionfun_getCN(@strnvarchar(4000))returnsnvarchar(4000)asbegindeclare@wordnchar(1),@CNnvarchar(4000)set@CN=''whilelen(@str)>0beginset@word=left(@str,1)ifunicode(@word)between19968and19968+20901set@CN=@CN+@wordset@str=right(@str,len(@str)-1)[email protected]_getCN('ASDKG论坛KDL')--论坛selectdbo...
数据库操作教程 2022-09-23 17:24:40 -
SQLServer全文检索(full-text)语法
sqlserver全文检索有两种搜索方式,一种是contains,另一种是freetext。前者是包含,类似于like'%关键词%',后者则是将一段文字分词以后对每个词进行搜索...
数据库操作教程 2022-09-23 17:24:38 -
总结下sqlservergroupby的用法
今天用实例总结一下groupby的用法。归纳一下:groupby:ALL,Cube,RollUP,Compute,Computeby创建数据脚本CreateTableSalesInfo(Ctiynvarchar(50),OrderDatedatetime,OrderIDint)insertintoSalesInfoselectN'北京','2014-06-09',1001unionallselectN'北京','2014-08-09',1002unionallselectN'北京','2013-10-09',1009unionallselectN'大连','2013-08-09',4001unionallselectN'大连','2013-10-09',4002unionallselectN'大连','2013-05-12',4003unionallselectN'大连','2014-11-11',4004unionallselectN'大连','2014-12-11',4005首先执行以下脚本:selectCtiy,count(OrderID)asOrderCountfromSale...
数据库操作教程 2022-09-23 17:24:35 -
SQLServer中发送HTML格式邮件的方法
sqlserver发送html格式的邮件,参考代码如下:DECLARE@tableHTMLNVARCHAR(MAX);--获取当前系统时间,和数据统计的时间set@d_nowdate=convert(datetime,convert(varchar(10),dateadd(day,-1,getdate()),120),120);--如果有数据则发送ifexists(selecttop1*fromt_table1(nolock)whered_rq=@d_nowdate)beginset@str_subject='某某'+convert(varchar(10),@d_nowdate,120)+'净值.';SET@tableHTML=N'<H1>某某</H1><br>目前测试中<br><tableborder="1">'+N'<tr><th>日期</th><th>基金代码</th><th>基金名称</th><th>净值</th>...
数据库操作教程 2022-09-23 17:24:32 -
SQLSERVERAGENT警告:事件ID:312
Successfullyre-openedthelocaleventlog-NOTE:Someeventsmayhavebeenmissed.Attemptingtotore-openthelocaleventlog...Unabletoreadlocaleventlog(reason:事件日志文件已在读取间更改。). 事件类型:警告 事件来源:SQLSERVERAGENT 事件种类:AlertEngine 事件ID:312 日期:2008-7-19 事件:17:08:17 用户:N/A 计算机:B-SERVER 描述: Successfullyre-openedthelocaleventlog-NOTE:Someeventsmayhavebeenmissed. 有关更多信息,请参阅在http://go.microsoft.com/fwlink/events.asp的帮助和支持中心...
数据库操作教程 2022-09-23 17:24:14 -
SQLSERVER中忽略索引提示
当我们想让某条查询语句利用某个索引的时候,我们一般会在查询语句里加索引提示,就像这样复制代码代码如下:SELECTid,namefromTBwith(index(IX_xttrace_bal))wherebal<100当在生产环境里面,由于这个索引提示的原因,优化器一般不会再去考虑其他的索引,那有时候这个索引提示可能会导致查询变慢经过你的测试,发现确实是因为这个索引提示的关系导致查询变慢,但是SQL服务器已经缓存了这条SQL语句的执行计划,如果修改SQL语句的话可能会有影响而且,可能不单只一条SQL语句用了索引提示,还有其他的SQL语句也用了索引提示,你不可能马上去修改这些SQL语句的时候可以使用SQLSERVER里面的一个traceflag这个traceflag能忽略SQL语句里面的索引提示和存储过程里面的索引提示不需要修改SQL语句,就可以进行性能排查运行下面脚本创建数据库和相关索引复制代码代码如下:USEmasterGOIFDB_ID('Trace8602')ISNOTNULL DROPDATABASETrace8602GOCREATEDA...
数据库操作教程 2022-09-23 17:24:14