原文:SQL SERVER统计服务器所有的数据库(数据库文件).表(表行数).字段(各字段)等详细信息 USE STAT GO SET NOCOUNT ON IF EXISTS(SELECT 1 FROM SYS.TABLES WHERE TYPE='U' AND name='DBInfo') DROP TABLE DBInfo IF EXISTS(SELECT 1 FROM SYS.TABLES WHERE TYPE='U' AND name='ColumnsInfo') DROP TABLE
前言:统计信息作为sql server优化器生成执行计划的重要参考,需要数据库开发人员,数据库管理员对其有一定的理解,从而合理高效的应用,管理. 第一部分 概念 统计信息(statistics):描述某个(些)栏位,索引的数据分布情况.优化器用其评估生成高效执行计划. 密度(density):一个比率值,显示在一个(组)列中有多少唯一值.(实际应用中值越小越好) Density = 1 / Number of distinct values for column(s) 直方图(histogram
场景:查询人员指定年月工作量信息 USE [Test] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER procedure [dbo].[GetWorkLoadMain] @year int, @month int, ) as begin ) )+'-01' declare @sql varchar(max) set @sql='' select @sql=@sql+',['+Rtrim(ProjectName)+'] int
---注意:这里统计的周末包括周5,周6,但不包括周日ALTER FUNCTION [dbo].[GetWeekDaysByMonth] ( @Year INT, @Month INT, @Day INT ) RETURNS INT AS BEGIN ); , , , ; , , , ), , , )) ); --月天数 ; BEGIN ;---周几 END; ELSE BEGIN SET @weekday = DATEPART(WEEKDAY, @date);---周几 END; BEGIN
1. set statistics time on go xxxx go set statistics time off 2. DECLARE @begin dateTime DECLARE @end dateTime SET @begin=getdate(); BEGIN xxxx end set @end=getdate(); SELECT datediff(ms,@begin,@end) as 'Elapsed Time' 3. 也可以设置Query-Query options
在今天的文章里,我想谈下在线索引重建操作( Online Index Rebuild operations),它们在SQL Server 2014里有怎样的提升.我们都知道,自SQL Server 2005开始引入了在线索引重建操作.但这些在线操作并非真正的在线操作,因为在操作开始时,SQL Server需要获得共享表锁(Shared Table Lock (S) ),在操作结束时需要在对应表上获得架构修改锁(Schema Modification Lock (Sch-M) ).因此这些操作是真