一.关于执行计划 执行计划是优化器生成的用于确定如何处理一个给定查询的“工作计划”.一个计划包含一组运算符,通常按照特定的顺序来应用这些运算符.此外,一些运算符可以在它们之前的运算符还在处理时被应用(即不一定是完全串行),还有一些运算符也有可能被应用多次. 二.图形化执行计划 2.1 SSMS中的图形化执行计划 在SSMS(SQL Server Management Studio)中,有两种图形化的执行计划可供选择.一种是估计执行计划(Ctrl+L键),另一种是实际执行计划(Ctrl+M键).两…
SQL查询(笔记2——实体查询) 二.实体查询 如果查询返回了某个数据表的全部数据列,且该数据表有对应的持久化类映射,我们就把查询结果转换成实体查询.将查询结果转换成实体,可以使用SQLQuery提供的多个重载addEntity()方法. String sqlString = "select * from enrolment where year=:year"; List l = session.createSQLQuery (sqlString) //指定查询的记录行转换成Enrol…
  TIJ读书笔记02-控制执行流程 TIJ读书笔记02-控制执行流程 if-else 迭代 无条件分支 switch语句 所有条件语句都是以条件表达式的真假来决定执行路径,也就是通过布尔测试结果来决定程序的执行路径. 由于java中布尔类型的特殊实现,如果想在布尔测试中测试一个非布尔值,必须将其转换成布尔表达式. 也就是说像C和C++中的while(1)这种方式是不可以的. if-else if-else有两种: if(boolean statment){ statments;} if(boo…
第四章 子查询:在外部查询内嵌套的内部查询(按照期望值的数量分为,标量子查询 scalar subqueries,多值子查询multivalued subqueries)(按照子查询对外部查询的依赖性分为独立子查询self-contained subqueries和相关子查询 correlated subqueries) 应用一:关系分区问题,使用group by和distinct count 来解决关系分区问题 Eg:NorthWind返回每个美国员工至少为其处理过一个订单的所有客户 独立子查…
我们知道,SqlServer执行sql语句的时候,有一步是对sql进行编译以生成执行计划, 在生成执行计划之前会去缓存中查找执行计划 如果执行计划缓存中有对应的执行计划缓存,那么SqlServer就会重用这个执行计划缓存,避免编译,从而提高效率, 对于开发者来说,为了达到能够重用执行计划的目的,使用参数化的sql是一个必要的条件. 除了参数化的sql,对于即席查询或者是动态生成的查询语句,也就是非参数化的sql语句,SqlServer本身也在对一些sql进行自动优化处理. 在SqlServer层…
原文:SQL点滴27-性能分析之执行计划 一直想找一些关于SQL语句性能调试的权威参考,但是有参考未必就能够做好调试的工作.我深信实践中得到的经验是最珍贵的,书本知识只是一个引导.本篇来源于<Inside Microsoft SQL Server 2008>,有经验的高手尽管拍砖把. 这个部分将讲解一些性能分析工具,这些性能分许主要关注在执行计划. 缓存执行计划  SQL Server 2008提供了一些服务器对象来分析执行计划Sys.dm_exec_cached_plans:    包含缓存…
DML操作符包括增删改查等操作方式. insert into Person.Address (AddressLine1, AddressLine2, City, StateProvinceID, PostalCode, rowguid, ModifiedDate) values( N'1313 Mockingbird Lane', N'Basement', N'Springfield', 79, N'02134', NEWID(), GETDATE() ) 如此简单的INSERT语句,执行计划比…
执行计划对性能影响甚大. 系统是怎么得出一个号的执行计划的?主要是依赖于准确的统计信息.统计信息准确的前提下,执行语句重用性高,可避免频繁编译,这也有助于提高性能. 但如果怀疑统计信息不够准确,可以强制待执行的SQL语句编译.主要方法为清除内存中的执行计划,运用编译语句等. 为何索引重建后查询速度变快? 1.消除了数据碎片 2.更新了统计信息.…
多线程处理慢sql查询以及List(Array)的拆分 系统数据量不大,但是访问速度特别慢,使用多线程优化一下!!! 优化结果:访问时间缩短了十几秒  25s --> 8s 一.List的拆分:Iterables.partition 注意: 引入的包为google名下的   Iterables.partitions(List list , int size);  // list表示需要被拆分的集合,size表示拆分后的集合的元素个数 例如:size=3,表示会拆分为2个集合,第一个集合中的元素为…
系统先操作地址空间,真正要用的时候才申请物理内存,进行使用. Reserved Memory  保留内存,虚拟内存 Commited Memory 提交内存,物理内存 [如何判断SQL SERVER 内存不足?] 如果进程的用户态CPU时间比较高,一般说明它没有遇到其他瓶颈,正全力运行.如果内存有瓶颈,一般用户态的CPU时间不会很高,但核心态的CPU时间反而升高,因为系统要做的paging动作(pages/sec计数器).同时磁盘也会比较繁忙.但磁盘繁忙,而paging不忙,却不能说明内存不足.…