摘要: 范围查找在聚簇索引下,数据在物理上按顺序排在数据页上,重复值也排在一起,因而在那些包含范围检查(between、、>=)或使用group by或order by的查询时,一旦找到具有范围中第一个键值的行,具有后续索引值的行保证物理上毗连在一起而不必进一步搜索,避免了大范围扫描,可以大大提高查询速度。聚积索引选择选择聚簇索引应基于where子句和连接操作的类型。聚簇索引的侯选列是:主键列,该列在where子句中使用或经常用它作为连接的时候。按范围存取的列,如pri_order > 100 and pri_order 41.797 MB重建索引随着数据行的插入、删除和数据页的分裂,有些 阅读全文
posted @ 2013-09-21 17:40 超缘 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 安全方案1. 基于网络安全机制数据库服务器和客户机传送的数据是明文的。保证对网络上传送的数据包进行加密。保证数据库服务器所在的操作系统的安全性。成熟的网络安全技术:VPN、SSL、数字证书。网络技术适合于比较敏感或专用的数据库系统。2. 基于sql server本身实现的方案服务器的身份验证 ---- 登录名设置数据对象的操作权限 --- 登录成功后,按照登录名对应的数据库用户名访问数据对象。可以对权限细分。一个原则就是保证给客户机分配的权限够用就行!!!!OPI体系结构物理层(最底层)、数据链路层、网络层、传输层、会话层、表示层和应用层TCP/IP(应用程序)-> 应用层 -> 阅读全文
posted @ 2013-09-21 17:39 超缘 阅读(415) 评论(0) 推荐(0) 编辑
摘要: 完整模式下,即使发生检查点操作,也不会将截断事务日志。数据库做第一次完整备份时,会将已经提交的事务日志提交到备份文件。数据库做差异备份,不会将已经得奖的事务转移到备份文件中。每次做事务日志备份,都会将已经提交的事务日志转移到备份文件中。 阅读全文
posted @ 2013-09-21 17:36 超缘 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 类型1.Main data file:主数据文件,有且只有一个。(.mdf)2.Next data file:次数据文件,0~n个。 (.ndf)3.Log data file:日志文件 1~n个 (.ldf)空间分配原则先分配后使用的原则多余的空间、未使用的空间通过压缩数据文件(包括日志文件)来释放出来读写机制1.对于数据文件,如果同时存在次文件,数据库采用比例填充的读写机制,即同时向多个数据文件中写入数据,而不是先写满一个数据文件,再写另外的数据文件。当然数据先写入到主文件,到达一定量时(主数据文件没有写满)会写入到其它的次文件中。是随机读写的。2.对日志文件是先写满一个日志文件,再写另外 阅读全文
posted @ 2013-09-21 17:34 超缘 阅读(412) 评论(0) 推荐(0) 编辑
摘要: 数据操作语句insertupdatedelete数据操作影响的结论表中数据的变化牵一发动全身,会同时导致到索引中数据的变化。Insert操作会引起所有索引的变化Delete操作会引起所有索引的变化Update操作肯定会引起聚集索引的变化Update操作可能会引起非聚集索引的变化(看索引键值有无修改)delete或update不存在的数据时,同样会引起相应索引的变化?insert或update时,先更新聚集索引,然后才更新非聚集索引delete时,先更新非聚集索引如果查询不需要索引,就应该删除无用的索引以提供效率!!!虽然更新操作同样用得上索引。这是因为更新操作带来的索引维护工作是不小的。 阅读全文
posted @ 2013-09-21 17:33 超缘 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 索引最初生成时将索引的数据按照B+树的结构放置在连续的物理页上,这样做的目的是通过连续的i/o扫描索引页面获得最佳的i/o性能。Insert或者update当更新后的数据内容超过页面的存储空间容量时,引擎分使用页拆分的方法来获取足够的空间存储新增入进来的索引数据。即另外分配一个新的页面(注意这上页面相对于之前的那些页面是不连续的了),同时将原来页面的数据移动一半的数据到新页上来。最终的结果就是打断了索引页面的物理连续性,使得i/o操作从连续变成不连续,从而降低了性能。碎片的产生索引碎片的产生很大原因是大量的页拆分的结果。所以碎片到达一定量时,索引就会失去了快速查找的作用。避免页拆分相应索引找到 阅读全文
posted @ 2013-09-21 17:28 超缘 阅读(293) 评论(0) 推荐(0) 编辑
摘要: -- SQL查询处理的步骤(生成了很多中间表)SELECT TOP 3 a.CustomerId,COUNT(1) AS order_countFROM dbo.T_Customer AS aINNER JOIN dbo.T_Order AS bON a.CustomerId = b.CustomerIdWHERE a.CustomerId 10ORDER BY order_count;/* 执行顺序1、FROM:对FROM子句中的前两个表执行笛卡尔积(交叉联接),生成虚拟表T1。交叉连接:cross join 并且不需要ON连接2、ON:对T1应用ON筛选器,两边都匹配的数据放入到T2。(I 阅读全文
posted @ 2013-09-21 17:27 超缘 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 抛出错误提示DECLARE @s VARCHAR(10);DECLARE @d INT;SET @s = 'P20100518001269'SET @d = 12;RAISERROR ('订单:%s不存在商品Id:%d' , 16, 1,@s,@d) WITH NOWAIT;try_cach事务-- try cath 写法BEGIN TRANSACTION;BEGIN TRY /*更新语句*/ COMMIT TRANSACTION;END TRYBEGIN CATCH ROLLBACK TRANSACTION; SELECT ERROR_MESSAGE() AS 阅读全文
posted @ 2013-09-21 17:20 超缘 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 不知道你们遇到过没有,一些SQL语句什么优化方法都用过了,查询速度就是快不起来,后来把Inner Join改成Left Join,奇迹发生了。呆会我来举个例子说明。 阅读全文
posted @ 2013-09-18 16:49 超缘 阅读(263) 评论(0) 推荐(0) 编辑
摘要: 理解扫描和查找以新华字典为例,找一个字,如果用扫描的方式,就是一页一页地翻过去。查找就是知道这个字的拼音,直接跳跃式的翻到相应的页面(翻几次)。或者不知道拼音就在前面的目录里面按部首、笔画查找,然后再根据提示的页码翻到相应的页数。--- 聚集索引查找 – 非聚集索引查找(可能存在书签查找)理解聚集索引和非聚集索引没有聚集索引的表是一个堆表,有聚集索引的表是一个聚集索引表。因为聚集索引和数据是混在一起的,数据是聚集索引的一部分。索引是一个平衡树结构(根结点、中间结点和叶子结点)。如果是聚集索引表,数据就放在聚积索引的叶子结点中。非聚集索引查找和书签查找因为一个表只有能创建一个聚集索引,而实际情况 阅读全文
posted @ 2013-09-18 16:28 超缘 阅读(669) 评论(0) 推荐(1) 编辑