摘要: merge: 在2008后被引入,它能将insert,Update,delete 简单并为一句,根据与源表连接的结果,对目标表进行插入,更新和删除操作例如:Merge是关于对于两个表之间进行操作的 注意:merge语句结束后必须以 ;结尾,否则报错 阅读全文
posted @ 2016-07-28 18:15 那就让我这样吧 阅读(368) 评论(0) 推荐(0) 编辑
摘要: sqlserver2008之后引入Grouping sets是group by的增强版本,Grouping sets 在遇到多个条件时,聚合是一次性从数据库中取出所有需要操作的数据,在内存中对数据库进行聚合操作并生成结果,而union all是多次扫描表,将返回结果进行union,这也就是为什么gr 阅读全文
posted @ 2016-07-28 17:53 那就让我这样吧 阅读(569) 评论(0) 推荐(0) 编辑
摘要: 大多数数据库需要同时处理多个查询,这些查询并不会像车等待红绿灯排队等待,而是会寻找最短的路径执行,因此需要一个红绿灯进行约束,这个红绿灯就是锁 理论上所有的事务之间应该是完全隔离的,但是事实上隔离的成本实在太高(必须是序列化的隔离级别才能完全隔离)sqlserver通过锁告诉所有并发的连接,在同一个 阅读全文
posted @ 2016-07-28 17:27 那就让我这样吧 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 事务的四个特性: 原子性,一致性,持久性,隔离性 原子性: 原子性:表示事务执行是作为原子,不可分割,整个语句要么执行,要么不执行sqlserver中每一个单独的语句可以看做是包含在事务中每一句本身具有原子性,要么执行,要么不执行,不会有中间状态 例如:上面例子的约束,执行插入3成功执行,但是插入4 阅读全文
posted @ 2016-07-28 16:28 那就让我这样吧 阅读(470) 评论(0) 推荐(0) 编辑
摘要: 索引: 在sqlserver中,存储的单位最小是页,页是不可再分的B树:初衷是减少对磁盘的扫描次数,如果一个表或者索引没有使用B树(对于没有聚集索引的表是使用 Heap 堆进行存储的),那么查找一个数据,需要在整个表包含的数据库页中进行全盘扫描,这大大增加了IO负担打包sqlserver使用B树进行 阅读全文
posted @ 2016-07-28 15:14 那就让我这样吧 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 对于sql来说查询的思维方式的面向集合对于游标来说:思维方式是面向行的 性能上:游标会吃更多内存,减少可见的并发,锁定资源等 当穷尽了while循环,临时表,表变量,自建函数,或其他方式仍然无法实现某些查询的时候,可以考虑使用游标 游标的生命周期由5部分组成: 游标可以很简单,也可以很复杂,取决于游 阅读全文
posted @ 2016-07-28 14:22 那就让我这样吧 阅读(481) 评论(0) 推荐(0) 编辑
摘要: 了解通用表达式: 为了让代码简洁:在一个查询中引用另外的结果集都是通过视图而不是子查询来进行分解,但是视图是系统级对象,如果数据集仅仅需要在存储过程或是自定义函数中使用一次的话,使用view有些奢侈哈 所以可以考虑用公用表达式:可以看做是一个临时的结果集,可以在select ,insert,upda 阅读全文
posted @ 2016-07-28 11:26 那就让我这样吧 阅读(405) 评论(0) 推荐(0) 编辑