背景说明: 今天查阅书籍时,偶然间发现“在对某个索引行执行删除操作时,只是为该行增加了一个删除标记,这个索引行并不会释放它的存储空间,Insert产生的新的索引行也不能被插入到该位置.索引列的修改过程其实是将对应的列值删除,然后再插入新的列值(与数据行本身的修改是不一致的,这也正是我们尽量不使用修改频繁的列来创建索引的原因).所以,无论是插入.修改.删除,都需要消耗存储空间,增大B-Tree索引结构的深度,影响数据的查询速度.尤其是删除和修改,不仅造成了存储空间的浪费,而且增加了扫描索引块的数量…
一.查看表名和对应的数据行数select  a.name as '表名',b.rows as '表数据行数'from sysobjects a inner join sysindexes bon a.id = b.idwhere   a.type = 'u'and b.indid in (0,1)--and a.name not like 't%'order by b.rows desc 二.查看表名和表占用空间信息--判断临时表是否存在,存在则删除重建if exists(select 1 fr…
create table #Data(name varchar(100),row varchar(100),reserved varchar(100),data varchar(100),index_size varchar(100),unused varchar(100)) declare @name varchar(100) declare cur cursor for select name from sysobjects where xtype='u' order by name ope…
转自:https://blog.csdn.net/yenange/article/details/50493580 查询数据文件与日志文件占用情况,查看数据大小,查看库大小 1. 查看数据文件占用(权限要求较大) DBCC showfilestats 2. 查看日志文件占用 dbcc sqlperf(logspace) USE master go--简易版 SELECT Name, physical_name, Size/128.0 AS [Size(MB)], FILEPROPERTY(Nam…
前言 上一篇我们分析了数据库中的统计信息的作用,我们已经了解了数据库如何通过统计信息来掌控数据库中各个表的内容分布.不清楚的童鞋可以点击参考. 作为调优系列的文章,数据库的索引肯定是不能少的了,所以本篇我们就开始分析这块内容,关于索引的基础知识就不打算深入分析了,网上一搜一片片的,本篇更侧重的是一些实战项内容展示,希望通过本篇文章各位看官能在真正的场景中找到合适的解决方法足以. 对于索引的使用,我希望的是遇到问题找到合适的解决方法就可以,切勿乱用!!! 本篇在分析出索引的优越性的同时也将负面影响…
这篇文章我想谈下SQL Server如何在变长列上存储索引.首先我们创建一个包含变长列的表,在上面定义主键,即在上面定义了聚集索引,然后往里面插入80000条记录: -- Create a new table CREATE TABLE Customers ( CustomerName ) NOT NULL PRIMARY KEY, Filler ) NOT NULL ) GO -- Insert 80.000 records ) BEGIN INSERT INTO Customers VALUE…
很久没写blog,不是懒,实在是最近我这的访问速度不好,用firefox经常上传不了图片 ....... 今天无意发现了SQL Server 2008 Datetime Cast 成 Date 类型可以使用索引,分享一下: 测试环境: USE TEMPDB GO CREATE TABLE TB ( ID INT IDENTITY(1,1) PRIMARY KEY, NAME VARCHAR(200), OPTIME DATETIME DEFAULT GETDATE() ) GO DECLARE …
本文分为两个问题: 第一,碎片是什么:第二,碎片怎么处理: 现在,来找解决这两个问题:  一.碎片是什么 说到碎片,就要提到索引了,索引用着挺爽的啊!是的,一旦索引建立,我们搜索数据的效率就提高了:然后我们就要想一想了,索引将我们的数据排序了,不管聚集还是非聚集索引总归是将数据排序了.这些数据给排序了,那么问题来了,我们个这些已经排序的数据进行插入操作会产生什么后果?人家本来好好排着队呢!插队的来了! 假设一群很瘦的人在排队,突然插入一个胖子,且不说胖子捣乱了正常的排序规则,胖子插进队伍中,一个…
SQL server 查询那些语句在使用临时表 最近在日常的性能测试工作中发现,数据库端的IO读写比较大,有规律的2-8M的波动,数据库的版本为 SQL server 2008 sp3. 这些IO操作主要来自于临时表,在测试之前,我们已经对部分消耗资源较多的语句进行了跟踪. 对一些使用临时表的语句进行了修改,但是肯定还是有落网之鱼.我们需要对其进行甄别,做到进一步的优化. 在开始之前,我们先来了解下什么样的操作会使用到临时表: 时的用户对象, 比如临时表,表变量等(#,##,@开头的一些变量)…
SQL Server 中什么情况会导致其执行计划从索引查找(Index Seek)变成索引扫描(Index Scan)呢? 下面从几个方面结合上下文具体场景做了下测试.总结.归纳. 1:隐式转换会导致执行计划从索引查找(Index Seek)变为索引扫描(Index Scan) Implicit Conversion will cause index scan instead of index seek. While implicit conversions occur in SQL Serve…