-
理解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 -
将一个表中个某一列修改为自动增长的方法
昨天有位学生问我“一个表已经建好了,能不能将里面的一个字段改为自动增长?”,“能,但没有必要去修改它,应该在建表的时候就设计好”我说。这时候他和另一位学生讨论起来...
数据库操作教程 2022-09-23 17:24:42 -
sql将一个表中的数据插入到另一个表中的方法
列名不一定要相同,只要你在HH中列出要插入列的列表跟selectfrommm表中的选择的列的列表一一对应就可以了,当然两边的数据类型应该是兼容的。insertintohh(fielda,fieldb,fieldc)selectfieldx,fieldy,fieldzfrommm复制代码代码如下:---更新计量点中不存在的数据,将台帐中的信息转移到计量点中insertintoMetricPoints(MeterID,MetricPointName,[Description],DepartmentID,MediumID)(SELECTm.MeterID,m.MetricItems+m.InstallPlaceasm_MetricPointName,m.MetricItems,m.DepartmentID,m.MediumIDFROMMetersmWHERENOTEXISTS(SELECT1FROMMetricPointsWHEREMetricPoints.MeterID=m.MeterID)andm.MediumID=2)声名:a,b,都是表复制代码代码如下:--b表存在(两表结构一样)i...
数据库操作教程 2022-09-23 17:18:53 -
在SQLServer中使用SQL语句查询一个存储过程被其它所有的存储过程引用的存储过程名
这个问题对于规模稍微大些的项目而言,显得尤其重要了,数据库中如果有几百个存储过程,难道还一个个找不成,即使自己很了解业务和系统,时间长了,也难免能记得住。如何使用SQL语句进行查询呢?下面就和大家分享下SQL查询的方法:复制代码代码如下:selectdistinctnamefromsyscommentsa,sysobjectsbwherea.id=b.idandb.xtype='p'andtextlike'%pro_GetSN%'上面的蓝色字体部分表示要查询的存储过程的名称...
数据库操作教程 2022-09-23 17:16:50 -
SQL统计一个数据库中所有表记录的数量
复制代码代码如下:CREATETABLE#tmptb(tbnamesysname,tbrowsint...
数据库操作教程 2022-09-23 17:16:35 -
分享:在存储过程中使用另一个存储过程返回的查询结果集的方法
很多查询类的存储过程会返回一个表结构的结果集,如果在其他存储过程中需要用到这个结果集,为了避免编写重复的sql脚本,可以直接使用前者的查询结果。 如,存储过程sp_GetBorrowRecord@BeginTime,@EndTime可以查询出某一时间范围(开始时间@BeginTime,结束时间@EndTime)内的所有借书记录...
数据库操作教程 2022-09-23 17:16:04 -
SQL中的ISNULL函数使用介绍
ISNULL使用指定的替换值替换NULL。语法ISNULL(check_expression,replacement_value)参数check_expression将被检查是否为NULL的表达式...
数据库操作教程 2022-09-23 17:15:54 -
多列复合索引的使用绕过微软sqlserver的一个缺陷
然而,微软sqlserver在处理这类索引时,有个重要的缺陷,那就是把本该编译成索引seek的操作编成了索引扫描,这可能导致严重性能下降举个例子来说明问题,假设某个表T有索引(cityid,sentdate,userid),现在有个分页列表功能,要获得大于某个多列复合索引V0的若干个记录的查询,用最简单表意的方式写出来就是V>=V0,如果分解开来,就是:cityid>@cityid0or(cityid=@cityid0and(sentdate>@sentdate0or(sentdate=@sentdate0anduserid>=@userid0))),当你写出上述查询时,你会期待sqlserver会自动的把上述识别为V>=V0类型的边界条件,并使用indexseek操作来实施该查询。然而,微软的sqlserver(2005版)有一个重要缺陷(其他的sqlserver如何还不得知),当它遇到这样sql时,sqlserver就会采用indexscan来实施,结果是您建立好的索引根本就没有被使用,如果这个表的数据量很大,那所造成的性能下降是非常大的...
数据库操作教程 2022-09-23 17:13:59 -
将mater库中的系统存储过程批量生成*.sql文件通用且非常实用
大家都知道系统存储过程是无法用工具导出的(大家可以试试>任务>生成SQL脚本)因为系统存储过程一般是不让开发人员修改的。需要知识:1、xp_cmdshell命令的使用2、sp_MS_marksystemobject标记系统存储过程的方法3、dos命令,如type,>>等4、bcp命令的使用复制代码代码如下:usemastergoifOBJECT_ID('pr_procToSql')isnotnulldropprocpr_procToSqlgocreateprocpr_procToSql(@服务器名varchar(100),@用户名varchar(100),@密码varchar(100),@pathvarchar(200),@databasevarchar(200),@sysprocint='0'--是否标记为系统函数1:是,0:否,@proc_namevarchar(100)=''--默认是所有,可以模糊搜索,@savetypevarchar(200)='.sql'--默认保存为sql脚本)as/*版本:v1作者:达摩日期:2012-04-13功能:1将mast...
数据库操作教程 2022-09-23 17:13:58 -
sql语句查询数据库中的表名/列名/主键/自动增长值实例
sql语句查询数据库中的表名/列名/主键/自动增长值----查询数据库中用户创建的表----jsj01为数据库名selectnametablenamefromjsj01....
数据库操作教程 2022-09-23 17:10:00 -
SQL2000中的默认sa帐号的修改与删除方法
现在用MSSQL的地方太多了,有很多做技术的个人电脑上也安装SQL专业版,因为它用的多,但用的人都知道,SQL有个超级用户sa,此用户默认情况下,它指派给固定服务器角色sysadmin,并不能进行更改。一般懂点安全问题的技术人员都会把这个密码修改掉,但修改再复杂的密码都不是绝对安全的,一些暴力破解软件,菜鸟都会用...
数据库操作教程 2022-09-23 17:09:48