Microsoft SQL Server 2005技术内幕:T-SQL查询笔记
Microsoft SQL Server 2005技术内幕:T-SQL查询笔记
目录
f
f
f
f
f
f
f
f
第二章 物理查询处理
分析,代数化,查询优化
f
f
f
f
f、
分析——》绑定——》优化
分析:检查,例如检查使用分隔标识符的表或列名称是否以数字开头,分析几乎是所有编程语言编译器的一项常规操作
绑定:确定SQL语句所引用对象的特征检查请求语义是否有意义,例如检查From A join B的查询时,如果A是一个表
B是一个存储过程,则绑定失败
优化:类似于绑定,优化器一次只优化批处理中的一条语句,在编译器为该批处理生成执行计划并存储到plan cache之后
将执行该计划的执行上下文(execute context)的特殊副本。sqlserver像缓存执行计划一样缓存执行上下文
sqlserver并不优化batch中的每条sql语句,他只优化那些访问表而且可能生成多个执行计划的语句,sqlserver优化所有的DML
只有被优化过的语句才会生成执行计划
f
运算符信息提示框
f
logical operation:基于微软查询处理概念模型的逻辑操作。例如,联接运算符的physical operation属性表示联接算法(nested loops,merge ,hash)物理运算符
logical operation属性表示逻辑联接类型(Inner join,outer join,semi join 等等)逻辑运算符
如果没有与该运算符关联的逻辑操作,则这项度量的值与physical operation相同
actual number of rows:从该运算符实际返回的行数(只显示在实际的计划中)
estimated I/O cost和estimated cpu cost:运算符在特定资源上的估计成本(I/O或CPU)这两个度量将帮助你确定运算符是否是I/O密集或CPU密集的
例如,你可以看到clustered index seek运算符主要与I/O有关,而hash match运算符主要与cpu有关
estimated operator cost:执行该操作的成本
estimated subtree cost:如前所述,他表示到当前节点为止整个子树的累积成本
estimated number of rows:该运算符预计的返回行数。在有些情况下,通过观察实际行数和估计行数之间的差异,你可以找出因统计信息不足或其他原因而导致的成本问题
estimated row size:你可能会奇怪为什么在实际的查询计划中没有显示该属性的实际值。因为你的表可能包含可变长度类型,表中行的大小各异
actual rebinds和actual rewinds:这两个度量仅与作为nested loops联接内侧的运算符有关,在其他运算符中,rebinds将显示为1,rewinds将显示为0
他们表示内部init方法被调用的次数。重新绑定次数和重绕次数之和等于联接外侧所处理的行数。重新绑定意味着联接的一个或多个参数发生更改后,必须重新计划
联接的内侧。重绕意味着任何相关参数都没有发生更改,可以重用之前的内侧结果集
信息提示框的底部显示该运算符的其他信息,如关联的对象名称、输出、参数等
f
f
代数化代替sqlserver2000的规范化
分析树->查询处理器树
f
名称解释,二元运算符,类型派生
运算符平展 栈溢出
f
名词解释检查每个对象是否真的引用了系统目录,系统表中已经存在的表或列
对于视图检查视图树
TSQL中的数据类型是静态确定
聚合绑定
分组绑定
f
基于成本的优化器cost-base
f
优化分几部分:细微计划优化
f
加载索引和表上的统计信息,启动基于成本的优化
f
快速计划优化
f
优化器DMV
SELECT * FROM sys.[dm_exec_query_optimizer_info]
f
f
f
SET SHOWPLAN_XML
f
F
F
xml架构showplanxml.xsd囊括了估计的和运行时的XML显示计划,然而运行时,XML显示计划还提供了额外的信息,因此,他的特定元素和属性在这个xsd中是可选的
安装sqlserver2005时该架构被放到
C:\Program Files\Microsoft SQL Server\90\Tools\Binn\schemas\sqlserver\2004\07\showplan目录
你也可以通过http://schemas.Microsoft.com/sqlserver得到该架构
XML格式的显示计划可以保存到扩展名为sqlplan的文件
F
F
F
f
因为执行时DOP值会根据执行开始时的工作负荷被调整
运行时计划会不同
f
f
f
跟踪sql2005
f
f
执行计划更新
插入分为两种
标量插入数据(trivial insert )和批量插入数据(bulk insert)
更新执行计划
f
更新索引键和分区键是完全 delete/insert
因此他的成本大概是非键update的语句的两倍
查询优化器执行IUD语句时有两种不同的策略,每行维护(per-row maintenance)和每索引维护(per-index maintenance)
f
sequence运算符强制执行顺序
spool运算符,Halloween spool
f
f
假脱机防止了两次更新同一条记录,确保得到正确的结果,我们把IUD查询计划中的这种假脱机称为Halloween假脱机
f
f
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
正在更新 [dbo].[BriefingEventConfig] [PK_BriefingEventConfig],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[OpinionMonitorViewTrend] [PK_OpinionMonitorViewTrend],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[ClassifyTag] [PK_ClassifyTag],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[BriefingEventDetail] [PK_BriefingEventDetail],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[tbl_SPHELPDB] 已更新 0 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[tbl_XPMSVER] 已更新 0 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[tbl_Sysdatabases] 已更新 0 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[ClassifyTagResult] [PK_ClassifyTagResult],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[tbl_loaded_modules] 已更新 0 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[tbl_TopN_QueryPlanStats] 已更新 0 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[Notification_Rank] [PK_Notification_Message],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[OpinionMonitorViewComment] 已更新 0 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[tbl_MissingIndexes] 已更新 0 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[tbl_SYSINDEXES] [_WA_Sys_00000003_0B129727],不需要更新... [_WA_Sys_00000001_0B129727],不需要更新... [_WA_Sys_00000009_0B129727],不需要更新... 已更新 0 条索引/统计信息,3 不需要更新。 正在更新 [dbo].[InfoAlarmBriefingConfig] [PK_InfoAlarm_BriefingConfig] 已更新... [_WA_Sys_00000009_0BC6C43E] 已更新... [_WA_Sys_0000000A_0BC6C43E] 已更新... [_WA_Sys_00000002_0BC6C43E] 已更新... [_WA_Sys_00000003_0BC6C43E] 已更新... [_WA_Sys_00000004_0BC6C43E] 已更新... [_WA_Sys_00000005_0BC6C43E] 已更新... [_WA_Sys_00000006_0BC6C43E] 已更新... [_WA_Sys_00000007_0BC6C43E] 已更新... [_WA_Sys_00000008_0BC6C43E] 已更新... 已更新 10 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[tbl_IMPORTEDFILES] 已更新 0 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[tbl_SCRIPT_ENVIRONMENT_DETAILS] [_WA_Sys_00000001_0CFADF99],不需要更新... [_WA_Sys_00000002_0CFADF99],不需要更新... 已更新 0 条索引/统计信息,2 不需要更新。 正在更新 [dbo].[tbl_DEBUGPRINT] 已更新 0 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[Notification_User] [PK_T_Notification_User],不需要更新... [_WA_Sys_00000002_0EF836A4],不需要更新... 已更新 0 条索引/统计信息,2 不需要更新。 正在更新 [dbo].[HotspotIsland] [PK_Hotspot_Island] 已更新... [_WA_Sys_00000002_0F624AF8] 已更新... [_WA_Sys_00000004_0F624AF8] 已更新... [_WA_Sys_00000005_0F624AF8] 已更新... 已更新 4 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[ClassifyKeywordCustom] [PK_ClassifyKeywordCustom],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[tbl_REQUESTS] [_WA_Sys_00000002_0FD74C44],不需要更新... [idx1],不需要更新... [idx2],不需要更新... [idx3],不需要更新... [idx4],不需要更新... [_WA_Sys_00000009_0FD74C44],不需要更新... [_WA_Sys_0000003F_0FD74C44],不需要更新... [stats1],不需要更新... [_WA_Sys_00000033_0FD74C44],不需要更新... [_WA_Sys_00000003_0FD74C44],不需要更新... [_WA_Sys_00000032_0FD74C44],不需要更新... [_WA_Sys_00000039_0FD74C44],不需要更新... [_WA_Sys_00000038_0FD74C44],不需要更新... [_WA_Sys_00000037_0FD74C44],不需要更新... 已更新 0 条索引/统计信息,14 不需要更新。 正在更新 [dbo].[tbl_NOTABLEACTIVEQUERIES] [idx1],不需要更新... [_WA_Sys_0000000E_10CB707D],不需要更新... [_WA_Sys_0000000D_10CB707D],不需要更新... [_WA_Sys_00000003_10CB707D],不需要更新... 已更新 0 条索引/统计信息,4 不需要更新。 正在更新 [dbo].[tbl_OS_WAIT_STATS] [cidx],不需要更新... [_WA_Sys_00000003_11BF94B6],不需要更新... [_WA_Sys_00000008_11BF94B6],不需要更新... 已更新 0 条索引/统计信息,3 不需要更新。 正在更新 [dbo].[ReportIssuedDetail] [PK_ReportIssuedDetail],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[BaiduNewsAmount] [PK_BaiduNewsAmount],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[tbl_SPINLOCKSTATS] 已更新 0 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[tbl_SYSPERFINFO] 已更新 0 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[tbl_SQL_CPU_HEALTH] [_WA_Sys_00000003_149C0161] 已更新... [_WA_Sys_00000001_149C0161] 已更新... [_WA_Sys_00000007_149C0161],不需要更新... [_WA_Sys_00000006_149C0161],不需要更新... [_WA_Sys_00000004_149C0161],不需要更新... 已更新 2 条索引/统计信息,3 不需要更新。 正在更新 [dbo].[Notification_Reply] [PK_T_Notification_Reply],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[InfoAlarmBriefing] [PK_InfoAlarm_Briefing] 已更新... [_WA_Sys_00000002_151B244E] 已更新... [_WA_Sys_00000006_151B244E] 已更新... [_WA_Sys_00000007_151B244E] 已更新... [IX_InfoAlarmBriefing] 已更新... 已更新 5 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[tbl_FileStats] [_WA_Sys_00000002_1590259A],不需要更新... [_WA_Sys_00000006_1590259A],不需要更新... [_WA_Sys_00000005_1590259A],不需要更新... 已更新 0 条索引/统计信息,3 不需要更新。 正在更新 [dbo].[ClusterTopic] [PK_ClusterTopic],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[tbl_dm_exec_query_resource_semaphores] 已更新 0 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[tbl_dm_os_memory_brokers] 已更新 0 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[tbl_dm_exec_query_memory_grants] 已更新 0 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[ClusterTopicDetail] [PK_ClusterTopicDetail],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[tbl_HEADBLOCKERSUMMARY] [_WA_Sys_00000006_1960B67E],不需要更新... [_WA_Sys_00000003_1960B67E],不需要更新... [_WA_Sys_00000002_1960B67E],不需要更新... [idx1],不需要更新... [_WA_Sys_00000008_1960B67E],不需要更新... 已更新 0 条索引/统计信息,5 不需要更新。 正在更新 [dbo].[NetPoliceDetail] [PK_NetPoliceDetail],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[KmsHarmony] [PK_KmsHarmony],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[tbl_RUNTIMES] [cidx],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[NetizensTrueName] [PK_NetizensTrueName],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[tbl_SYSINFO] 已更新 0 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[SiteSensitive] [PK_SiteSensitive],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[BriefingChoiceResult] [PK_BriefingChoiceResult],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[SiteEvaluation] [PK_SiteEvaluation],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[Channel] [PK_Channel],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[sysarticles] [c1sysarticles] 已更新... [_WA_Sys_0000000B_1FD8A9E3] 已更新... [_WA_Sys_0000000A_1FD8A9E3] 已更新... [_WA_Sys_00000009_1FD8A9E3] 已更新... [_WA_Sys_0000000E_1FD8A9E3] 已更新... [_WA_Sys_00000006_1FD8A9E3] 已更新... [_WA_Sys_00000003_1FD8A9E3] 已更新... [_WA_Sys_00000010_1FD8A9E3] 已更新... [_WA_Sys_0000000F_1FD8A9E3] 已更新... [_WA_Sys_0000000D_1FD8A9E3] 已更新... [_WA_Sys_00000011_1FD8A9E3] 已更新... [_WA_Sys_00000012_1FD8A9E3] 已更新... [_WA_Sys_00000005_1FD8A9E3] 已更新... [_WA_Sys_00000008_1FD8A9E3] 已更新... 已更新 14 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[sysarticlecolumns] [idx_sysarticlecolumns] 已更新... [_WA_Sys_00000002_21C0F255] 已更新... 已更新 2 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[SiteEvaluationFormula] [PK_SiteEvaluationFormula],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[SiteEvaluationScore] [PK_SiteEvaluationScore],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[FeelingsHotspotsCommentCount] [PK_Feelings_HotspotsCommentCount] 已更新... [_WA_Sys_00000002_23F3538A] 已更新... [_WA_Sys_00000003_23F3538A] 已更新... 已更新 3 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[TinyBlogGroup] [PK_TinyBlogGroup] 已更新... [_WA_Sys_00000002_24134F1B] 已更新... [_WA_Sys_00000003_24134F1B] 已更新... [_WA_Sys_00000006_24134F1B] 已更新... [_WA_Sys_00000004_24134F1B] 已更新... [_WA_Sys_00000005_24134F1B] 已更新... [_WA_Sys_00000007_24134F1B] 已更新... 已更新 7 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[CommentatorFormula] [PK_Commentator_Formula] 已更新... 已更新 1 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[ChannelDetail] [PK_ChannelDetail],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[Notification_Formula] [PK_T_Notification_Formula],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[sysschemaarticles] [c1sysschemaarticles],不需要更新... [_WA_Sys_00000007_25918339],不需要更新... [_WA_Sys_00000005_25918339],不需要更新... [_WA_Sys_00000006_25918339],不需要更新... [_WA_Sys_00000009_25918339],不需要更新... [_WA_Sys_0000000B_25918339],不需要更新... [_WA_Sys_0000000A_25918339],不需要更新... 已更新 0 条索引/统计信息,7 不需要更新。 正在更新 [dbo].[syspublications] [uc1syspublications] 已更新... [unc2syspublications] 已更新... [nc3syspublications] 已更新... [_WA_Sys_00000028_2779CBAB] 已更新... [_WA_Sys_00000004_2779CBAB] 已更新... [_WA_Sys_00000009_2779CBAB] 已更新... [_WA_Sys_00000025_2779CBAB] 已更新... [_WA_Sys_00000012_2779CBAB],不需要更新... [_WA_Sys_0000000F_2779CBAB],不需要更新... [_WA_Sys_0000000E_2779CBAB] 已更新... [_WA_Sys_0000000B_2779CBAB],不需要更新... [_WA_Sys_0000000C_2779CBAB],不需要更新... [_WA_Sys_00000006_2779CBAB] 已更新... [_WA_Sys_0000000D_2779CBAB],不需要更新... [_WA_Sys_00000027_2779CBAB],不需要更新... 已更新 9 条索引/统计信息,6 不需要更新。 正在更新 [dbo].[CommentatorDocScoreFormula] [PK_Commentator_DocScoreFormula],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[FeelingsHotspotsSaying] [PK_Feelings_HotspotsSaying] 已更新... [_WA_Sys_00000002_28B808A7] 已更新... [_WA_Sys_00000003_28B808A7] 已更新... 已更新 3 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[ClassifyResult2] [PK_ClassifyResult2],不需要更新... [IX_ClassifyResult2_ClassIdArchiveId],不需要更新... [IX_ClassifyResult2],不需要更新... [IX_ClassifyResult2_1],不需要更新... [_WA_Sys_00000004_28ED12D1],不需要更新... [_WA_Sys_00000005_28ED12D1],不需要更新... [_WA_Sys_00000006_28ED12D1],不需要更新... [_WA_Sys_00000007_28ED12D1],不需要更新... [_WA_Sys_00000008_28ED12D1],不需要更新... [_WA_Sys_00000009_28ED12D1],不需要更新... [_WA_Sys_0000000A_28ED12D1],不需要更新... [_WA_Sys_0000000B_28ED12D1],不需要更新... [_WA_Sys_0000000C_28ED12D1],不需要更新... [_WA_Sys_0000000D_28ED12D1],不需要更新... [_WA_Sys_0000000E_28ED12D1],不需要更新... [_WA_Sys_0000000F_28ED12D1],不需要更新... [_WA_Sys_00000010_28ED12D1],不需要更新... [_WA_Sys_00000011_28ED12D1],不需要更新... [_WA_Sys_00000012_28ED12D1],不需要更新... [_WA_Sys_00000013_28ED12D1],不需要更新... [_WA_Sys_00000014_28ED12D1],不需要更新... [_WA_Sys_00000015_28ED12D1],不需要更新... [_WA_Sys_00000016_28ED12D1],不需要更新... [_WA_Sys_00000017_28ED12D1],不需要更新... [_WA_Sys_00000018_28ED12D1],不需要更新... [_WA_Sys_00000019_28ED12D1],不需要更新... [_WA_Sys_0000001A_28ED12D1] 已更新... [_WA_Sys_0000001B_28ED12D1],不需要更新... [_WA_Sys_0000001C_28ED12D1],不需要更新... 已更新 1 条索引/统计信息,28 不需要更新。 正在更新 [dbo].[SearchSiteConfig] [PK_Search_SiteConfig_1] 已更新... [_WA_Sys_00000002_2A4B4B5E] 已更新... 已更新 2 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[TinyBlog] [PK_TinyBlog],不需要更新... [_WA_Sys_0000000E_2AC04CAA] 已更新... [_WA_Sys_0000000F_2AC04CAA] 已更新... [_WA_Sys_00000007_2AC04CAA] 已更新... 已更新 3 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[SiteGroup] [PK_SiteGroup] 已更新... [_WA_Sys_00000002_2B0A656D] 已更新... [_WA_Sys_00000003_2B0A656D] 已更新... [_WA_Sys_00000004_2B0A656D] 已更新... 已更新 4 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[CriminalInfo] [PK_CriminalInfo],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[FeelingsHotspotsPicture] [PK_FeelingsHotspotsPicture],不需要更新... [_WA_Sys_00000002_2D7CBDC4],不需要更新... [_WA_Sys_00000003_2D7CBDC4] 已更新... 已更新 1 条索引/统计信息,2 不需要更新。 正在更新 [dbo].[CommentatorTax] [PK_Commentator_Tax],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[OpinionMonitorComment] [PK_OpinionMonitorComment],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[CommentatorDocument] [PK_Commentator_Document],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[FeelingsHotspotsDetail] [PK_FeelingsHotspotsDetail] 已更新... [_WA_Sys_00000007_314D4EA8] 已更新... [_WA_Sys_00000008_314D4EA8] 已更新... [_WA_Sys_00000003_314D4EA8] 已更新... [_WA_Sys_00000009_314D4EA8] 已更新... [_WA_Sys_00000002_314D4EA8] 已更新... 已更新 6 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[CriminalInfoTel] [PK_CriminalInfoTel],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[SysGroup] [PK_T_Sys_Group] 已更新... [_WA_Sys_00000002_32E0915F] 已更新... [_WA_Sys_00000003_32E0915F] 已更新... [_WA_Sys_00000004_32E0915F] 已更新... [_WA_Sys_00000005_32E0915F] 已更新... [_WA_Sys_00000006_32E0915F] 已更新... [_WA_Sys_00000007_32E0915F] 已更新... [_WA_Sys_00000008_32E0915F] 已更新... 已更新 8 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[syssubscriptions] [unc1syssubscriptions] 已更新... [_WA_Sys_0000000E_32EB7E57] 已更新... [_WA_Sys_00000006_32EB7E57] 已更新... [_WA_Sys_00000003_32EB7E57] 已更新... [_WA_Sys_00000002_32EB7E57] 已更新... [_WA_Sys_00000007_32EB7E57] 已更新... [_WA_Sys_00000005_32EB7E57] 已更新... [_WA_Sys_00000004_32EB7E57] 已更新... [_WA_Sys_0000000A_32EB7E57] 已更新... 已更新 9 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[CriminalInfoQqNo] [PK_CriminalInfoQqNo],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[CommentatorReport] [PK_Commentator_Report],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[KmsRecommended] [PK_KMS_Recommended] 已更新... [_WA_Sys_00000002_3552E9B6] 已更新... 已更新 2 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[OpinionMonitorHotReply] [PK_OpinionMonitorHotReply],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[CriminalInfoEmail] [PK_CriminalInfoEmail],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[sysarticleupdates] [unc1sysarticleupdates],不需要更新... [_WA_Sys_0000000A_36BC0F3B],不需要更新... [_WA_Sys_00000002_36BC0F3B],不需要更新... 已更新 0 条索引/统计信息,3 不需要更新。 正在更新 [dbo].[SysGroupUser] [PK_T_Sys_GroupUser] 已更新... [_WA_Sys_00000002_373B3228] 已更新... 已更新 2 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[CriminalInfoDetail] [PK_CriminalInfoDetail],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[MSpub_identity_range] [unc1MSpub_identity_range],不需要更新... [_WA_Sys_00000005_38A457AD],不需要更新... [_WA_Sys_00000003_38A457AD],不需要更新... [_WA_Sys_00000002_38A457AD],不需要更新... 已更新 0 条索引/统计信息,4 不需要更新。 正在更新 [dbo].[KmsFriends] [PK_KmsFriends_1] 已更新... [_WA_Sys_00000002_39237A9A] 已更新... 已更新 2 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[systranschemas] [uncsystranschemas],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[KmsRelate] [PK_KMS_Relate] 已更新... [_WA_Sys_00000002_3AD6B8E2] 已更新... [_WA_Sys_0000000E_3AD6B8E2] 已更新... [_WA_Sys_00000006_3AD6B8E2] 已更新... [_WA_Sys_00000010_3AD6B8E2] 已更新... 已更新 5 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[SysUserLog] [PK_T_SYS_UserLog] 已更新... [_WA_Sys_00000002_3B0BC30C] 已更新... [_WA_Sys_00000003_3B0BC30C] 已更新... [_WA_Sys_00000004_3B0BC30C] 已更新... [_WA_Sys_00000005_3B0BC30C] 已更新... [_WA_Sys_00000006_3B0BC30C] 已更新... [_WA_Sys_00000007_3B0BC30C] 已更新... 已更新 7 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[WarningConfig] [PK_WarningConfig],不需要更新... [_WA_Sys_00000002_3B75D760],不需要更新... [_WA_Sys_00000003_3B75D760],不需要更新... 已更新 0 条索引/统计信息,3 不需要更新。 正在更新 [dbo].[MSpeer_lsns] [uci_MSpeer_lsns],不需要更新... [PK__MSpeer_l__3213E83E3D690CCA],不需要更新... [nci_MSpeer_lsns],不需要更新... 已更新 0 条索引/统计信息,3 不需要更新。 正在更新 [dbo].[ClassifyRuleSummary] [PK_ClassifyRuleSummary],不需要更新... [_WA_Sys_00000001_3BEAD8AC],不需要更新... 已更新 0 条索引/统计信息,2 不需要更新。 正在更新 [dbo].[SysUserRole] [PK_SYS_UserRole] 已更新... [_WA_Sys_00000002_3CF40B7E] 已更新... 已更新 2 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[InfoAlarmBriefingMaterial] [PK_InfoAlarm_BriefingMaterial_1] 已更新... [IX_InfoAlarmBriefingMaterial] 已更新... [_WA_Sys_00000003_3EC74557] 已更新... [_WA_Sys_00000004_3EC74557] 已更新... [_WA_Sys_00000014_3EC74557] 已更新... 已更新 5 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[ImportantPerson] [PK_ImportantPerson],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[BriefingSpecialConfig] [PK_BriefingSpecialConfig],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[MSpeer_request] [_WA_Sys_00000002_40457975],不需要更新... [_WA_Sys_00000001_40457975],不需要更新... 已更新 0 条索引/统计信息,2 不需要更新。 正在更新 [dbo].[KmsClassify] [PK_KMS_Classify] 已更新... [_WA_Sys_00000004_40C49C62] 已更新... [_WA_Sys_00000005_40C49C62] 已更新... [_WA_Sys_00000006_40C49C62] 已更新... [_WA_Sys_00000008_40C49C62] 已更新... 已更新 5 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[MSpeer_response] [_WA_Sys_00000001_422DC1E7],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[SysUser] [PK_T_SYS_User] 已更新... [_WA_Sys_00000002_4316F928] 已更新... [_WA_Sys_00000003_4316F928] 已更新... [_WA_Sys_00000004_4316F928] 已更新... [_WA_Sys_00000005_4316F928] 已更新... [_WA_Sys_00000006_4316F928],不需要更新... [_WA_Sys_00000007_4316F928] 已更新... [_WA_Sys_00000008_4316F928] 已更新... [_WA_Sys_00000009_4316F928] 已更新... [_WA_Sys_0000000A_4316F928] 已更新... [_WA_Sys_0000000B_4316F928] 已更新... [_WA_Sys_0000000C_4316F928] 已更新... [_WA_Sys_0000000D_4316F928] 已更新... [_WA_Sys_0000000E_4316F928] 已更新... [_WA_Sys_0000000F_4316F928] 已更新... [_WA_Sys_00000010_4316F928] 已更新... [_WA_Sys_00000011_4316F928] 已更新... [_WA_Sys_00000012_4316F928] 已更新... [_WA_Sys_00000013_4316F928] 已更新... [_WA_Sys_00000014_4316F928] 已更新... [_WA_Sys_00000015_4316F928] 已更新... [_WA_Sys_00000016_4316F928] 已更新... [_WA_Sys_00000017_4316F928] 已更新... [_WA_Sys_00000018_4316F928] 已更新... 已更新 23 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[MSpeer_topologyrequest] [_WA_Sys_00000002_4321E620],不需要更新... [_WA_Sys_00000001_4321E620],不需要更新... 已更新 0 条索引/统计信息,2 不需要更新。 正在更新 [dbo].[BriefingSpecial] [PK_BriefingSpecial],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[ReportIssued] [PK_ReportIssued],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[MSpeer_topologyresponse] [_WA_Sys_00000001_450A2E92],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[ClassifyResult_T] [PK_ClassifyResult_Temp] 已更新... [IX_ClassifyResult_Temp_ClassIdUrl] 已更新... [IX_ClassifyResult_Temp_Id] 已更新... 已更新 3 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[MSpeer_originatorid_history] [uci_MSpeer_originatorid_history],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[ViolationTreatViews] [PK_Violation_TreatViews],不需要更新... [_WA_Sys_00000002_477199F1] 已更新... [_WA_Sys_00000004_477199F1] 已更新... 已更新 2 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[MSpeer_conflictdetectionconfigrequest] [PK__MSpeer_c__3213E83F49CEE3AF],不需要更新... [_WA_Sys_00000002_47E69B3D],不需要更新... 已更新 0 条索引/统计信息,2 不需要更新。 正在更新 [dbo].[BriefingSpecialMaterial] [PK_BriefingSpecialMaterial],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[MonthlyReport] [PK_MonthlyReport],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[ClassifyRule] [PK_Classify_Type] 已更新... [IX_ClassifyRule] 已更新... [_WA_Sys_0000000D_49E3F248] 已更新... [_WA_Sys_00000003_49E3F248] 已更新... [_WA_Sys_0000000A_49E3F248] 已更新... [_WA_Sys_00000004_49E3F248] 已更新... [_WA_Sys_00000001_49E3F248] 已更新... [_WA_Sys_00000008_49E3F248] 已更新... [_WA_Sys_0000000C_49E3F248] 已更新... [_WA_Sys_00000012_49E3F248] 已更新... [_WA_Sys_0000001C_49E3F248] 已更新... [_WA_Sys_0000000F_49E3F248] 已更新... [_WA_Sys_0000000E_49E3F248] 已更新... 已更新 13 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[tbl_Reports] [PK__tbl_Repo__D5BD48054BEC364B],不需要更新... [IX_tbl_Reports_ReportName] 已更新... 已更新 1 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[BriefingChoiceAnnex] [PK_Briefing_Annex],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[SysRoleAction] [PK_SYS_RoleAction],不需要更新... [_WA_Sys_00000002_4C364F0E],不需要更新... 已更新 0 条索引/统计信息,2 不需要更新。 正在更新 [dbo].[Notification] [PK_T_Notification],不需要更新... [_WA_Sys_00000006_4C6B5938],不需要更新... [_WA_Sys_00000007_4C6B5938],不需要更新... [_WA_Sys_00000010_4C6B5938],不需要更新... 已更新 0 条索引/统计信息,4 不需要更新。 正在更新 [dbo].[MSpeer_conflictdetectionconfigresponse] [uci_MSpeer_conflictdetectionconfigresponse],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[ClassifyMetaTrend] [PK_ClassifyTrend] 已更新... [_WA_Sys_00000002_4F67C174] 已更新... [_WA_Sys_00000005_4F67C174] 已更新... 已更新 3 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[SysRoleMenu] [PK_SYS_RoleMenu_1] 已更新... [_WA_Sys_00000002_5006DFF2] 已更新... 已更新 2 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[NetizensNickName] [PK_NetizensNickName],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[sysreplservers] [PK__sysrepls__10A5BE635540965B] 已更新... 已更新 1 条索引/统计信息,0 不需要更新。 正在更新 [sys].[filestream_tombstone_1437248175] [FSTSClusIdx],不需要更新... [FSTSNCIdx],不需要更新... 已更新 0 条索引/统计信息,2 不需要更新。 正在更新 [dbo].[ViolationInfo] [PK_Violation_Info] 已更新... [_WA_Sys_0000000A_5629CD9C] 已更新... [_WA_Sys_0000000F_5629CD9C] 已更新... 已更新 3 条索引/统计信息,0 不需要更新。 正在更新 [sys].[syscommittab] [ci_commit_ts],不需要更新... [si_xdes_id],不需要更新... 已更新 0 条索引/统计信息,2 不需要更新。 正在更新 [dbo].[Temp_ClassId] [PK_Temp_ClassId] 已更新... [_WA_Sys_00000003_5792F321] 已更新... 已更新 2 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[GatherSpecialPage] [PK_Gather_SpecialPage] 已更新... [_WA_Sys_00000002_589C25F3] 已更新... [IX_GatherSpecialPage_PublishOn] 已更新... [_WA_Sys_0000000A_589C25F3] 已更新... [_WA_Sys_00000004_589C25F3] 已更新... [_WA_Sys_00000007_589C25F3] 已更新... [_WA_Sys_00000005_589C25F3] 已更新... [IX_GatherSpecialPage_Url] 已更新... [_WA_Sys_00000003_589C25F3],不需要更新... 已更新 8 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[ClassifyResult] [PK_ClassifyResult_T] 已更新... [IX_ClassifyResult_T_ClassIdUrl],不需要更新... [IX_ClassifyResult_T_Id] 已更新... [IX_ClassifyResult_T_ArchiveMD5] 已更新... [IX_ClassifyResult_T_ParentId] 已更新... [IX_ClassifyResult_T_ClassIdParentIdPublishon] 已更新... [IX_ClassifyResult_T_ClassIdPublishOn] 已更新... [IX_ClassifyResult_T_ClassIdWeight] 已更新... [IX_ClassifyResult_T_ClassIdImageCountPublishOn] 已更新... [IX_ClassifyResult_T_ArchiveMD5Id] 已更新... [IX_ClassifyResult_T_ArichiveId] 已更新... 已更新 10 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[ImportantSiteInfo] [PK_ImportSiteInfo],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[ClassifyKeyword] [PK_ClassifyKeyword],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[BriefingChoice] [PK_Briefing],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[tbl_AnalysisSummary] [PK__tbl_Anal__5B789DC85FF32EF8],不需要更新... [UQ__tbl_Anal__8AB26CBA62CF9BA3],不需要更新... 已更新 0 条索引/统计信息,2 不需要更新。 正在更新 [dbo].[ImportantSitePeople] [PK_ImportantSitePeople],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[testGAP] [IX_TESTGAP_ID] 已更新... 已更新 1 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[OpinionMonitorConfig] [PK_OpinionMonitorConfig],不需要更新... [_WA_Sys_00000004_60924D76],不需要更新... [_WA_Sys_0000000A_60924D76],不需要更新... [_WA_Sys_00000007_60924D76],不需要更新... [_WA_Sys_00000003_60924D76],不需要更新... 已更新 0 条索引/统计信息,5 不需要更新。 正在更新 [dbo].[InfoAlarmBriefingResult] [PK_InfoAlarmBriefingResult],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[ImportantSitePeopleDetail] [PK_ImportantSitePeopleDetail],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[SysMenu] [PK_SYS_Menu_1] 已更新... [_WA_Sys_00000002_65370702] 已更新... [_WA_Sys_00000003_65370702] 已更新... [_WA_Sys_00000004_65370702] 已更新... [_WA_Sys_00000005_65370702] 已更新... [_WA_Sys_00000006_65370702] 已更新... [_WA_Sys_00000007_65370702] 已更新... 已更新 7 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[SysRole] [PK_SYS_Role] 已更新... [_WA_Sys_00000002_656C112C] 已更新... 已更新 2 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[OpinionMonitor] [PK_OpinionMonitor],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[SysGroupSite] [PK_SysGroupSite],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[Notification_Stat] [PK_Notification_Stat],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[ClassifyCommentCount] [PK_CommentCount] 已更新... [_WA_Sys_00000004_68487DD7] 已更新... 已更新 2 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[SiteAssign] [PK_SiteAssign],不需要更新... [_WA_Sys_00000006_69C6B1F5] 已更新... [_WA_Sys_00000002_69C6B1F5] 已更新... [_WA_Sys_00000003_69C6B1F5] 已更新... [IX_SiteAssign_GroupId] 已更新... [IX_SiteAssign_SiteId] 已更新... [_WA_Sys_00000007_69C6B1F5] 已更新... 已更新 6 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[IndexPageDefault] [PK_IndexPageDefault],不需要更新... [_WA_Sys_00000002_6DB73E6A],不需要更新... 已更新 0 条索引/统计信息,2 不需要更新。 正在更新 [dbo].[OpinionMonitorView] [PK_OpinionMonitorView],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[tbl_PERF_STATS_SCRIPT_RUNTIMES] [_WA_Sys_00000001_6E414E4F],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[CommentatorDocumentSearch] [PK_Commentator_DocumentSearch],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[OpinionMonitorViewDetail] [PK_OpinionMonitorViewDetail],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[GatherSpecialType] [PK_Gather_SpecialType],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[FeelingsHotspots] [PK_Feelings_Hotspots] 已更新... [_WA_Sys_0000000A_72910220] 已更新... [_WA_Sys_0000000C_72910220] 已更新... [_WA_Sys_00000014_72910220] 已更新... [_WA_Sys_00000015_72910220] 已更新... [_WA_Sys_00000006_72910220] 已更新... 已更新 6 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[SysAction] [PK_SYS_Action],不需要更新... [_WA_Sys_00000002_74AE54BC],不需要更新... [_WA_Sys_00000003_74AE54BC],不需要更新... [_WA_Sys_00000004_74AE54BC],不需要更新... [_WA_Sys_00000005_74AE54BC],不需要更新... 已更新 0 条索引/统计信息,5 不需要更新。 正在更新 [dbo].[IPScanSchedule] [PK_IPScanSchedule],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[tblNexusInfo] [_WA_Sys_00000001_75235608],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[CounterDetails] [PK__CounterD__F12879E477FFC2B3],不需要更新... [_WA_Sys_00000003_76177A41] 已更新... [_WA_Sys_00000002_76177A41] 已更新... 已更新 2 条索引/统计信息,1 不需要更新。 正在更新 [sys].[queue_messages_1977058079] [queue_clustered_index],不需要更新... [queue_secondary_index],不需要更新... 已更新 0 条索引/统计信息,2 不需要更新。 正在更新 [dbo].[tbl_BLOCKING_CHAINS] [_WA_Sys_0000000D_76D69450],不需要更新... [_WA_Sys_00000005_76D69450],不需要更新... [_WA_Sys_00000004_76D69450],不需要更新... [_WA_Sys_0000000B_76D69450],不需要更新... 已更新 0 条索引/统计信息,4 不需要更新。 正在更新 [dbo].[IndexPageDefaultLog] [PK_IndexPageDefaultLog],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[IndexPageInfo] [PK_IndexPage_Info] 已更新... [_WA_Sys_00000002_787EE5A0] 已更新... [_WA_Sys_00000006_787EE5A0] 已更新... [_WA_Sys_00000009_787EE5A0] 已更新... [_WA_Sys_00000019_787EE5A0] 已更新... [_WA_Sys_00000003_787EE5A0] 已更新... 已更新 6 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[Counter] [PK_Counter],不需要更新... [IX_Counter],不需要更新... 已更新 0 条索引/统计信息,2 不需要更新。 正在更新 [sys].[queue_messages_2009058193] [queue_clustered_index],不需要更新... [queue_secondary_index],不需要更新... 已更新 0 条索引/统计信息,2 不需要更新。 正在更新 [dbo].[MonthlyReportEvent] [PK_MonthlyReportEvent],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[IPScanResult] [PK_IPScanResult],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[CounterData] [PK__CounterD__1FB2147B7BD05397],不需要更新... [_WA_Sys_00000003_79E80B25],不需要更新... 已更新 0 条索引/统计信息,2 不需要更新。 正在更新 [sys].[queue_messages_2041058307] [queue_clustered_index],不需要更新... [queue_secondary_index],不需要更新... 已更新 0 条索引/统计信息,2 不需要更新。 正在更新 [dbo].[CommentatorScore] [PK_Commentator_Score_1],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[IndexPageInfoPersonal] [PK_IndexPageInfoPersonal] 已更新... [_WA_Sys_00000002_7C6F7215] 已更新... 已更新 2 条索引/统计信息,0 不需要更新。 正在更新 [dbo].[MonthlyReportDetail] [PK_MonthlyReportDetail],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[NetPolice] [PK_NetPolice],不需要更新... 已更新 0 条索引/统计信息,1 不需要更新。 正在更新 [dbo].[DisplayToID] [PK__DisplayT__15B69B8E7FA0E47B],不需要更新... [UQ__DisplayT__FA63CFA6027D5126] 已更新... 已更新 1 条索引/统计信息,1 不需要更新。 已更新了所有表的统计信息。
f
f
f
f
运算符的解释
f
f
f
第三章 查询优化
f
每个IAM页面管理4G的空间,如果一个区不属于拥有该IAM页的对象,则表示该区的位是0,否则是1
f
doubly linked list双向链表是逻辑顺序
f
堆表结构
f
聚集表结构
f
索引查找:一般随机I/O
索引扫描:一般顺序I/O
顺序I/O,扫描的页面一般连在一起,比如都在同一个区里面
SELECT INDEXPROPERTY()
f
4字节的唯一标识符只存在于非唯一的聚集索引中
8192-96-2=8094- 额外开销字节=8060
400w:2级
40亿:3级
f
f
从sqlserver7.0开始
f
f
索引访问方法
f
f
f
从sqlserver2000开始才支持降序索引,oracle从8i开始支持降序索引
f
segment 段运算符把数据进行分组,每次为下一个运算符(该示例中是top)提供一个组
讨论的关键是segment段运算符按orderdate值对数据分组,每次提供一个组,每个组中的最后一行具有最大的orderid
f
而且lookup总是随机I/O(不是顺序I/O)
f
f
SQLSERVER2000的图形化执行计划并没有明确区分RID LOOKUP和聚集键lookup,而后者实际是对聚集索引的查找操作
在sqlserver2000中,这两种lookup都被成为bookmark lookup
f
太多的lookup会使该访问方法的成本比直接扫描整个表还要高,sqlserver根据统计信息计算查询选择性
f
lookup的成本是符合条件的行数乘以1(如果是堆),或乘以聚集索引的级数(如果是聚集索引表)
f
你将得到类似于_WA_Sys_00000002_31B762FC 的统计信息名称,他是sqlserver自动创建的(00000002_31B762FC :两个字节)
sqlserver2005引入了新的基于基数信息(cardinality information)的优化能力,他在内部维护字符串列的子字符串。当你利用like谓词应用模式匹配
筛选器时,他可以评估查询的选择性,甚至当模式以通配符开头时也是如此。而之前的sqlserver版本不具备这种能力
表现生猛的like语句(http://blogs.msdn.com/b/apgcdsd/archive/2011/04/27/like.aspx)
p148
f
f
索引交集
f
你还应该考虑访问模式(随机/顺序)以及其他因素。随机I/O的成本比顺序I/O要高许多
lookup使用随机I/O,表扫描使用顺序I/O
有序索引扫描的性能很大程度上取决于索引的碎片级别
f
SELECT * FROM sys.[dm_db_index_operational_stats]() SELECT * FROM sys.[dm_db_index_usage_stats]
SQL2005提供了DMF和DMV来查询索引利用率,比sql2000方便
f
外部碎片和内部碎片,平均页密度
f
sql2005引入联机索引操作,联机重建索引
联机索引操作利用sqlserver2005引入的行版本控制技术row-versioning,当联机重建索引时,sqlserver实际上会维护两个索引
完成该操作后用新索引覆盖旧索引
联机索引操作要求数据库有足够空间,而且比脱机操作慢,如果有维护窗口,最后停机在维护窗口做索引重建
尽管可以联机重建索引,但是运行这些操作会影响系统性能,所以最好在非高峰期执行联机索引重建
重组索引设计冒泡排序算法
重组索引得到的碎片整理级别不像完全重建索引那样理想,而且,总体来看,该操作比重建索引要记录更多日志(所以为什麽碎片率大于30%才重建索引),因此,他更慢
重组索引不能改变填充因子(sqlserver2012)
ALTER INDEX [ix_counttb_id] ON [dbo].[counttb] REBUILD WITH (FILLFACTOR=80) ALTER INDEX [ix_counttb_id] ON [dbo].[counttb] REORGANIZE WITH (FILLFACTOR=80) --消息 155,级别 15,状态 1,第 2 行 --'fillfactor' 不是可以识别的 ALTER INDEX REORGANIZE 选项。 DBCC SHOWCONTIG
重组索引不能在线重组
ALTER INDEX [ix_counttb_id] ON [dbo].[counttb] REBUILD WITH (FILLFACTOR=80,ONLINE=ON) ALTER INDEX [ix_counttb_id] ON [dbo].[counttb] REORGANIZE WITH (ONLINE =ON ) 消息 155,级别 15,状态 1,第 2 行 'ONLINE' 不是可以识别的 ALTER INDEX REORGANIZE 选项。
重组索引在sqlserver2000中,是唯一的联机碎片整理工具。该操作同时只获取两个页面上的短期锁以确定他们的顺序是否正确,
如果不正确,则互相置换。其次,重建索引操作只能作为一个事务运行,如果他在运行时被中断,整个操作将被回滚。
不像重组索引那样可以在操作两个页面时被中断。当再次运行重组索引时,他可以从上次中断的位置继续进行
f
sqlserver的重建索引实际上是mysql的copytable方式,需要有足够的空间,而不是inplace方式
在sqlserver2012里在线重建索引丢失数据我觉得是加锁的时间点和时间问题
在覆盖旧索引的时候,解锁,这时候有insert插入数据,然后覆盖,导致解锁时刻insert的数据丢失(这是我想到的的其中一种情况)
mysql重建索引的做法
http://hedengcheng.com/?p=421
inplace:原地
inplace update:原地更新
MySQL Add Index实现 MySQL各版本,对于add Index的处理方式是不同的,主要有三种: Copy Table方式 这是InnoDB最早支持的创建索引的方式。顾名思义,创建索引是通过临时表拷贝的方式实现的。 新建一个带有新索引的临时表,将原表数据全部拷贝到临时表,然后Rename,完成创建索引的操作。 这个方式创建索引,创建过程中,原表是可读的。但是会消耗一倍的存储空间。 Inplace方式 这是原生MySQL 5.5,以及innodb_plugin中提供的创建索引的方式。所谓Inplace,也就是索引创建在原表上直接进行,不会拷贝临时表。相对于Copy Table方式,这是一个进步。 Inplace方式创建索引,创建过程中,原表同样可读的,但是不可写。 Online方式 这是MySQL 5.6.7中提供的创建索引的方式。无论是Copy Table方式,还是Inplace方式,创建索引的过程中,原表只能允许读取,不可写。对应用有较大的限制,因此MySQL最新版本中,InnoDB支持了所谓的Online方式创建索引。 InnoDB的Online Add Index,首先是Inplace方式创建索引,无需使用临时表。在遍历聚簇索引,收集记录并插入到新索引的过程中,原表记录可修改。而修改的记录保存在Row Log中。当聚簇索引遍历完毕,并全部插入到新索引之后,重放Row Log中的记录修改,使得新索引与聚簇索引记录达到一致状态。 与Copy Table方式相比,Online Add Index采用的是Inplace方式,无需Copy Table,减少了空间开销;与此同时,Online Add Index只有在重放Row Log最后一个Block时锁表,减少了锁表的时间。 与Inplace方式相比,Online Add Index吸收了Inplace方式的优势,却减少了锁表的时间。
http://www.orczhou.com/index.php/2010/04/innodb-plugin-some-feature-2/
InnoDB Plugin在快速DDL上做了一些改进,在做的实验中看到,创建secondary indexes时,大约快了20%。 1. 原理 在MySQL5.0里面,如果数据表的记录数很多,增加和删除索引是非常慢的。CREATE INDEX and DROP INDEX命令是通过先创建一个空的临时表,这个表就是你新增或删除索引后的结构,然后把原表中的全部记录都拷贝(插入)到新的临时表中,最后把原表删除,临时表重命名成原表。 MySQL5.1的一些架构上的改变,可以简化上面的过程(不再需要逐行拷贝数据)。InnoDB Plugin利用这个改变,缩短了大多数情况下的索引变更时间。对InnoDB来说有两类索引:the clustered index and secondary indexes。因为InnoDB的主键是the clustered index,数据存放再此,所以,删除或者添加主键(the clustered index)逐行拷贝也是必须的。 InnoDB Pluing在删除一个secondary indexes时,先更改一下InnoDB内部数据字典和MySQL的数据字典,然后把释放的空间归还给InnoDB以供重复使用。如果是增加一个secondary indexes,还是有点复杂的,Plugin先将数据表中的数据取出到memory buffers或者临时表中,并按照新建索引列排好序,然后建立索引的B-Tree。实验表明,这样还是稍微快一些
f
分区
在sqlserver2000中,分区是通过手工创建多个表和一个统一这些表的视图来实现的,相对于sqlserver2000的分区视图
sqlserver2005内置的分区有许多优势
f
流聚合
f
table spool运算符,他表示一个临时表,用于保存每个不重复app和starttime值组合的会话的合计
SELECT app,MAX(concurrent) AS mx FROM (SELECT app,(SELECT COUNT(*) FROM dbo.bigsessions AS s2 WHERE s1.app=s2.app AND s1.starttime>=s2.starttime AND s1.starttime<s2.endtime) AS concurrent FROM dbo.bigsession AS s1) AS c GROUP BY app;
actual rebinds和actual rewinds:这两个度量仅与作为nested loops联接内侧的运算符有关,在其他运算符中,rebinds将显示为1,rewinds将显示为0
他们表示内部init方法被调用的次数。重新绑定次数和重绕次数之和等于联接外侧所处理的行数。重新绑定意味着联接的一个或多个参数发生更改后,必须重新计划
联接的内侧。重绕意味着任何相关参数都没有发生更改,可以重用之前的内侧结果集
信息提示框的底部显示该运算符的其他信息,如关联的对象名称、输出、参数等
绑定:确定SQL语句所引用对象的特征检查请求语义是否有意义,例如检查From A join B的查询时,如果A是一个表
B是一个存储过程,则绑定失败
重新绑定表示join运算符的一个或多个相关参数发生变化,内侧必须被重新计算
该过程发生了14次,每对不重复的app和starttime就重新计算一次,表示上述运算符实际执行了14次合计操作
重绕表示没有相关参数发生变化并且原来的内部结果集可以被重用,该过程发生了999986次(1000000-14=999986).
本来,如果数据分布更接近实际情况,合计操作发生的次数要远远大于14,并且查询会更慢。
通过简单地从小型表sessions多次复制来准备示例数据是一个误解,各个列值的分布应该尽可能真实地反映生产环境
f
根据你的输入sqlserver将计算随机值以确定是否返回某页,是否读取一部分数据是以页为单位确定的
意味着你未必会得到与请求数完全相同的行数,只会得到非常接近的值,你请求的行越多,得到的结果集的行数越接近请求的行数
f
SELECT * FROM aa TABLESAMPLE SYSTEM(1000 ROWS)
SELECT * FROM aa TABLESAMPLE SYSTEM(0.1 PERCENT)
f
SELECT * FROM aa TABLESAMPLE SYSTEM(0.1 PERCENT) REPEATABLE(10)
tablesample子句
f
DB2的抽样算法
f
流聚合运算符为每个shipperid隔离出最大的orderdate,然后filter运算符筛选出该orderdate值早于‘20010101’的发货人
f
第六章 聚合和旋转数据
用户定义聚合 P373
.NET框架包含了数千个现成的类,可以满足极为苛刻的要求。.net语言不像sql那样是面向数据的,所以你没有这方面的限制。例如正则表达式在验证数据方面是极为有用的
而且被.net完全支持,sql是面向集合的,执行面向行的操作要使用游标,把游标改为CLR代码可以改善性能
clr代码的另一个好处是在计算频繁的操作中他比tsql代码更快
你需要确定你的clr代码在哪里运行,在服务器还是在客户端,在执行计算方面,clr代码通常比tsql更快更灵活
如果服务器端负载过高,你应该考虑一下在客户端执行clr代码是否更适当
f
用C#编写UDA
f
F
F
F
F
F
UDA必须包含Serializable特性。.net中的序列化表示持久地保存类中的字段值
UDA需要序列化中间结果。序列化的格式可以使用本机格式(native)
表示由sqlserver完成序列化,也可以由用户定义
F
F
查看已注册的clr类型
USE [master] SELECT * FROM sys.[assemblies] SELECT * FROM sys.[assembly_modules]
Microsoft.SqlServer.Types 4 1 microsoft.sqlserver.types, version=10.0.0.0, culture=neutral, publickeytoken=89845dcd8080cc91, processorarchitecture=msil 3 UNSAFE_ACCESS 1 2010-04-02 16:59:22.060 2010-04-02 16:59:22.547 0
f
f
第八章 数据修改
select into
f
f
使用openquery把动态sql和exec 存储过程里把结果select * into 临时表
insert into也可以使用openquery
EXEC [sys].[sp_serveroption] @server = [IP,PORT], -- sysname @optname = 'data access', -- varchar(35) @optvalue = N'true' -- nvarchar(128) SELECT * INTO spwho FROM OPENQUERY([IP,PORT],'EXEC SP_WHO') AS O; SELECT * FROM spwho
NSERT INTO [##tmptb] SELECT * FROM OPENQUERY([' + @IP + '], N''SELECT CONVERT(VARCHAR(MAX), ps.name) AS partition_scheme ,
F
F
f
f
f
带有output的insert
通过使用新的output子句,sqlserver2005支持从数据修改语句中返回输出。我们把这一特性看作是“返回结果的DML”
insert ,delete,update语句都支持output子句
在output子句中你可以引用特殊表inserted和deleted
这两个特殊表包含受数据修改语句所影响的行,他们分别包括新增行和修改后的行
旧行和修改之前的行。这里使用inserted和deleted表在触发器中使用的非常相似
f
f
f
序列机制
标识列
f
解决IDENTITY(1,1)的办法,包括异步和同步 生成序列
f
f
f
异步序列
f
用newid函数创建唯一值,使用UNIQUEIDENTIFIER数据类型保存newid()函数值
因为UNIQUEIDENTIFIER的长度为16字节,这会影响索引大小和联接性能
使用SELECT NEWSEQUENTIALID()函数保证同一台机器上生成的新GUID大于上一次生成的GUID,而newid()函数不保证同一台机器上生成的新GUID大于上一次生成的GUID
SELECT NEWID() CREATE TABLE a(a UNIQUEIDENTIFIER DEFAULT NEWID())
全局唯一标识符序列
f
删除数据
f
删除有重复行的表数据,表中没有唯一标识值
使用DISTINCT方法要求整行完全重复
SELECT DISTINCT * INTO orderstmp FROM orderdups DROP TABLE orderdups EXEC [sys].[sp_rename] @objname = N'orderstmp', -- nvarchar(1035) @newname = orderdups -- sysname
f
f
DELETE FROM OD FROM ORDRRDETAIL AS ODT JOIN ORDERA AS O ON O.ID=ODT.XX WHERE O.X=A
delete语句的join
f
f
f
WHILE 1 = 1 BEGIN DELETE TOP ( 5000 ) FROM largeorders WHERE orderdate < '20120101' IF @@ROWCOUNT < 5000 BREAK END
USE [sss] CREATE TABLE [#aa]( [id] [INT] IDENTITY(1,1) PRIMARY KEY, [NAME] [CHAR](400) NULL, [ni] [INT] NULL, [txt] [TEXT] NULL, ) SET IDENTITY_INSERT [#aa] ON DELETE TOP ( 5000 ) FROM [aa] OUTPUT [Deleted].[NAME] INTO [#aa](name) WHERE id > 9 SET IDENTITY_INSERT [#aa] OFF SELECT * FROM [#aa] SELECT * FROM [aa]
在sqlserver2005中你可以使用delete top代替之前的set rowcount选项
--delete数据并存档 WHILE 1 = 1 BEGIN BEGIN TRAN DELETE TOP ( 5000 ) FROM orders OUTPUT [Deleted].* INTO ordersarchive WHERE orderdate < '20100101' IF @@ROWCOUNT < 5000 BEGIN COMMIT TRAN BREAK END COMMIT TRAN END
f
如果没有output子句,你需要先查询数据并归档,然后再删除。这种方法既慢又复杂,而且为了保证select和delete之间不会新增符合筛选器的新行(被成为幻影行)你必须用串行隔离级别锁定要存档的数据。而使用output子句,不仅可以得到更好的性能,而且也不用再担心幻影行问题,你可以确保output子句中准确地得到被删除的数据
f
f
行值构造器
CTE是在ansi sql 1999中定义的
f
f
service broker
f
f
UPDATE TOP(10)语法
UPDATE TOP(10) [aa] SET [id]=xx WHERE [id]=xx
f
select赋值,set赋值 的区别
f
f
f
DECLARE @i AS INT; SET @i=0; UPDATE t1 SET @i=col1=@i+1
f
f
对于写频繁的环境,raid10是最好的
raid5对只读系统比较好,例如数据仓库
sqlserver2000中的触发器访问inserted表和deleted表是使用事务日志,而sqlserver2005访问inserted表和deleted表是使用tempdb
f
最小日志记录:只记录那些在操作期间分配的区地址以支持回滚,不用记录全部更改操作。
BULK操作包括:创建和重新生成索引、使用bulk引擎执行插入(bulk insert)、select into、大型对象log操作
f
f
第九章 图,树,层次结构和递归查询
f
图
f
树
f
f
BOM 物料表(Bill of Material)
f
迭代 递归
f
返回指定节点的下属
f
返回指定节点的祖先
f
闭包
f
最短路径
f
f
f
BOM中的最短路径
f
f
附录 逻辑难题
f
关于作者
f
f
f
f