开心一刻 今天下班,骑着青桔电动车高高兴兴的哼着曲回家,感觉整个世界都是我的 刚到家门口,还未下车,老妈就气冲冲的走过来对我说道:"你表哥就比你大一岁,人家都买了奔驰了,50 多万!" 我:"表哥那车,舅舅出了 40 多万" 老妈:"那不还有 10 多万是他自己出的" 我:"那 10 几万是他丈母娘出的" 老妈:"你还有脸说,你连个对象都没有!" 老妈走回家,回头望了眼我胯下的青桔,一脸不屑地说道:&quo…
开心一刻 一天,一个男人去未婚妻家玩,晚上临走时下起了大雨 未婚妻劝他留下来过夜,说完便去准备被褥,准备就绪后发现未婚夫不见了 过了好久,全身淋的像只落汤鸡的未婚夫回来了 未婚妻吃惊的问:"你跑哪去了" 未婚夫上气不接下气的回答:"我,我回家拿睡衣去了" 写在前面 在像 Web 服务这样需要快速响应的应用场景中,SQL 的性能直接决定了系统是否可以使用:特别在一些中小型应用中,SQL 性能更是决定服务能否快速响应的唯一标准 严格地优化查询性能时,必须要了解所使用数据…
开心一刻 昨晚我和我爸聊天 我:"爸,你怎么把烟戒了,也不出去喝酒了,是因为我妈不让,还是自己醒悟,开始爱惜自己啦?" 爸:"儿子啊,你说的都不对,是彩礼又涨价了." 我:"你不是有媳妇了吗?" 爸:"我有,可你没有啊!" 我:"爸,我长大了不娶媳妇,好好孝敬您!" 爸:"臭小子,你想的美,我一定要给你娶媳妇,让你的孩子也好好折腾你,让你也体会一下有一个不争气的儿子是什么感受!" 我:&…
原文:update值与原值相同时,SQL Server会真的去update还是忽略呢? 考虑下面的情况: 当update值与原值相同时,SQL Server会真的去update还是忽略?例如: update tbname set name='abc' --name原来的值就是abc 再如: update tbname set name='abc' --name原来的值就是abc where name='abc' 接下来我们将实际测试: --Microsoft SQL Server 2008 R2…
前言 开心一刻 我要飞的更高,飞的更高,啊! 谓词 SQL 中的谓词指的是:返回值是逻辑值的函数.我们知道函数的返回值有可能是数字.字符串或者日期等等,但谓词的返回值全部是逻辑值(TRUE/FALSE/UNKNOW),谓词是一种特殊的函数.关于逻辑值,可以查看:神奇的 SQL 之温柔的陷阱 → 三值逻辑 与 NULL ! SQL 中的谓词有很多,如 =.>.<.<> 等,我们来看看 SQL 具体有哪些常用的谓词 比较谓词 创建表与初始化数据 -- 1.表创建并初始化数据 DROP…
开心一刻 一头母牛在吃草,突然一头公牛从远处狂奔而来说:“快跑啊!!楼主来了!” 母牛说:“楼主来了关我屁事啊?” 公牛急忙说:“楼主吹牛逼呀!” 母牛大惊,拔腿就跑,边跑边问:“你是公牛你怕什么啊?” 公牛无奈道:“现在的楼主不仅吹牛逼,还扯蛋!” 然后小牛也在跟着跑,公牛和母牛问:“儿子你跑什么呢?” 小牛说:“楼主还扯犊子啊” 前情回顾 神奇的 SQL 之 联表细节 → MySQL JOIN 的执行过程(一)中,我们讲到了 JOIN 的部分内容,像:驱动表.JOIN 大致流程等.什么,还没…
开心一刻 小明:为什么中国人结婚非要选一个好日子呢 ? 楼主:嗯 ? 那肯定啊,结完婚之后你还能有好日子吗 ? 小明:那结婚时所说的白头到老是真的吗 ? 楼主:这哪能是真的,你看现在,头发还没白就秃了 小明:那女生的公主病是怎么回事 ? 楼主:原因很简单,不是长得丑就是穷 小明:那又漂亮又有钱的呢 ? 楼主:别逗了,那不是公主病,那是真公主 ! 小明:那你的是有公主病,还是真公主 ? 楼主:别闹了,我的在硬盘里 问题描述 一条 SQL 在数据库中是如何执行的呢 ?相信很多人都会对这个问题比较感兴…
开心一刻 楼主:来,我们先排练一遍 小伙伴们:好 嘿.哈.嚯 楼主:非常好,就是这个节奏,我们开始吧 楼主:啊.啊.啊,疼 ! 你们是不是故意的 ? 回表与覆盖索引 正式讲 ICP 之前了,我们先将相关的概念捋一捋,知道的就当回顾,不知道的就当了解了,这有助于对 ICP 的理解 建个示例表 tbl_index CREATE TABLE tbl_index (     c1 INT,     c2 INT,     c3 CHAR(1),     PRIMARY KEY(c1),     KEY…
开心一刻 楼主:心都让你吓出来了! 狮王:淡定,打个小喷嚏而已 前情回顾 神奇的 SQL 之 联表细节 → MySQL JOIN 的执行过程(一)中,我们讲到了 3 种联表算法:SNL.BNL 和 INL,了解了数据的查询方式是 one by one,联表方式也是 one by one :并谈到了 ON 和 WHERE,对下图中所说的提出了质疑 认为 ON 和 WHERE 的生效时机有待商榷:此时楼主开始了欠大家的账 神奇的 SQL 之 联表细节 → MySQL JOIN 的执行过程(二)中对联…
开心一刻 一天,楼主和隔壁小男孩一起坐电梯,中途进来一位高挑的美女,她牵着一条雪白的贵宾犬 小男孩看着这条雪白的贵宾犬,甚是喜欢,说道:阿姨,我能摸下这个狗狗吗? 美女:叫姐姐 小男孩低头看了下贵宾犬,虽说有点不乐意,但还是说道:阿姨,我能摸下这个姐姐吗? 楼主想忍住,但实在是忍不住了,哈哈哈... 初识 HAVING 关于 SQL 中的 HAVING,相信大家都不陌生,它往往与 GROUP BY 配合使用,为聚合操作指定条件 说到指定条件,我们最先想到的往往是 WHERE 子句,但 WHERE…
一.前言 在MSDN上看到一篇关于SQL Server 表分区的文档:已分区索引的特殊指导原则,如果你对表分区没有实战经验的话是比较难理解文档里面描述的意思.这里我就里面的一些概念进行讲解,方便大家的交流. SQL Server 解读[已分区索引的特殊指导原则](1)- 索引对齐 SQL Server 解读[已分区索引的特殊指导原则](2)- 唯一索引分区 二.解读 [对非聚集索引进行分区] “对唯一的非聚集索引进行分区时,索引键必须包含分区依据列.对非唯一的非聚集索引进行分区时,默认情况下 S…
一.前言 在MSDN上看到一篇关于SQL Server 表分区的文档:已分区索引的特殊指导原则,如果你对表分区没有实战经验的话是比较难理解文档里面描述的意思.这里我就里面的一些概念进行讲解,方便大家的交流. SQL Server 解读[已分区索引的特殊指导原则](1) 二.解读 [对唯一索引进行分区] “对唯一索引(聚集或非聚集)进行分区时,必须从唯一索引键使用的分区依据列中选择分区依据列.此限制将使 SQL Server 只调查单个分区,以确保表中不存在重复的新键值.如果分区依据列不可能包含在…
http://www.blogjava.net/allen-zhe/archive/2010/07/23/326966.html 性能优化之索引篇 近期项目需要, 做了一段时间的SQL Server性能优化,遇到了一些问题,也积累了一些经验,现总结一下,与君共享.SQL Server性能优化涉及到许多方面,如良好的系统和数据库设计,优质的SQL编写,合适的数据表索引设计,甚至各种硬件因素:网络性能.服务器的性能. 操作系统的性能,甚至网卡.交换机等.这篇文章主要讲到如何改善索引,还将有另一篇讨论…
SQL server 表中如何创建索引?看个示例,你就会了 use master goif db_id(N'zhangxu')is not nulldrop database zhangxugocreate database zhangxusp_helpdb zhangxuuse zhangxugoIF EXISTS (SELECT *FROM SYS.OBJECTS WHERE NAME = N'WORKER')DROP TABLE WORKERGOcreate table worker( w…
利用 Oracle EM 企业管理器 进行oracle SQL的优化(自动生成索引) ##应用情景 项目中有大量的SQL,尤其是涉及到统计报表时,表关联比较多,当初开发建表时也没搞好索引关联的,上线后发现查询很低.Oracle自带的EM控制台带有自动优化功能,能给出优化方案,本人主要利用其来给出索引的建立方案,应用上后SQL查询效率大大提高.本人机器上安装的是oracle 11g ##启动EM的环境条件 1. 安装并正常启动oracle 11g 2. 确认oracle控制台的服务是启动的 ![C…
在SQL Server 查询性能优化——覆盖索引(一)中讲了覆盖索引的一些理论. 本文将具体讲一下使用不同索引对查询性能的影响. 下面通过实例,来查看不同的索引结构,如聚集索引.非聚集索引.组合索引等来查看相同的SQL语句查询的不同性能   例一:没有任何索引的查询访问 1.表的碎片情况:   2.SQL查询语句与查询执行计划成本   --要求返回IO统计,也就是数据页访问的数量 SET STATISTICS IO ON --没有任何索引情况下的数据页访问数量 SELECT  [WBOOK_NO…
索引是什么?索引是提高查询性能的一个重要工具,索引就是把查询语句所需要的少量数据添加到索引分页中,这样访问数据时只要访问少数索引的分页 就可以.但是索引对于提高查询性能也不是万能的,也不是建立越多的索引就越好.索引建少了,用WHERE子句找数据效率低,不利于查找数据.索引建多了, 不利于新增.修改和删除等操作,因为做这些操作时,SQL SERVER除了要更新数据表本身,还要连带地立即更新所有的相关索引,而且过多的索引也会浪 费硬盘空间.因此要建得恰到好处,这就需要经验了.   一:索引的基本目的…
原文 http://www.cnblogs.com/BoyceYang/archive/2013/06/16/3139006.html 阅读导航 1. 概述 2. 什么是重复索引 3. 查找重复索引 4. 删除重复索引 5. 总结 1. 概述 很多人都知道索引在数据库上的是有利有弊的.像其他主流商业数据库一样SQL Server允许在一个列上重复创建索引.因为SQL Server没有限制创建重复索引的数量,只是限制数据库的一个表上最多可以创建999重复索引,所以这就增加了数据库中存在重复索引的可…
在<SQL Tuning 基础概述05 - Oracle 索引类型及介绍>的1.5小节,提到了几种"索引的常见执行计划": INDEX FULL SCAN:索引的全扫描,单块读,有序 INDEX RANGE SCAN:索引的范围扫描 INDEX FAST FULL SCAN:索引的快速全扫描,多块读,无序 INDEX FULL SCAN(MIN/MAX):针对MAX(),MIN()函数的查询 INDEX SKIP SCAN:查询条件没有用到组合索引的第一列,而组合索引的第一…
索引是什么?索引是提高查询性能的一个重要工具,索引就是把查询语句所需要的少量数据添加到索引分页中,这样访问数据时只要访问少数索引的分页就可以.但是索引对于提高查询性能也不是万能的,也不是建立越多的索引就越好.索引建少了,用WHERE子句找数据效率低,不利于查找数据.索引建多了,不利于新增.修改和删除等操作,因为做这些操作时,SQL SERVER除了要更新数据表本身,还要连带地立即更新所有的相关索引,而且过多的索引也会浪费硬盘空间.因此要建得恰到好处,这就需要经验了. 一:索引的基本目的 索引的基…
SQL优化 MySQL版  - -B树索引详讲 作者:Stanley 罗昊 [转载请注明出处和署名,谢谢!] 为什么要进行SQL优化呢?很显然,当我们去写sql语句时: 1会发现性能低 2.执行时间太长, 3.或等待时间太长 4.sql语句欠佳,以及我们索引失效 5.服务器参数设置不合理 SQL语句执行过程分析 1.编写过程: 编写过程就是我们平常写sql语句的过程,也可以理解为编写顺序,以下就是我们编写顺序: select from join on where 条件 group by 分组 h…
索引是什么?索引是提高查询性能的一个重要工具,索引就是把查询语句所需要的少量数据添加到索引分页中,这样访问数据时只要访问少数索引的分页就可以.但是索引对于提高查询性能也不是万能的,也不是建立越多的索引就越好.索引建少了,用WHERE子句找数据效率低,不利于查找数据.索引建多了,不利于新增.修改和删除等操作,因为做这些操作时,SQL SERVER除了要更新数据表本身,还要连带地立即更新所有的相关索引,而且过多的索引也会浪费硬盘空间.因此要建得恰到好处,这就需要经验了. 一:索引的基本目的 索引的基…
作者 Jonathan Allen,译者         邵思华         发布于     2015年6月14日   聚集列存储索引(CC Index)是SQL Server 2014中两大最引人瞩目的特性之一,设计为用于超过1千万条记录的数据表.使用者无需明确的指定索引,也能够保证分析式查询的优良性能. 但2014版本中的这一特性存在着一个缺陷,即使用者无法指定索引.虽然CC索引比起传统表的表扫描要快得多,但它还是及不上经手动调整的覆盖索引.因此,为了同时支持这两种模式,开发者不得不创建…
索引是什么?索引是提高查询性能的一个重要工具,索引就是把查询语句所需要的少量数据添加到索引分页中,这样访问数据时只要访问少数索引的分页就可以.但是索引对于提高查询性能也不是万能的,也不是建立越多的索引就越好.索引建少了,用WHERE子句找数据效率低,不利于查找数据.索引建多了,不利于新增.修改和删除等操作,因为做这些操作时,SQL SERVER除了要更新数据表本身,还要连带地立即更新所有的相关索引,而且过多的索引也会浪费硬盘空间.因此要建得恰到好处,这就需要经验了. 一:索引的基本目的 索引的基…
我作为SQL Server DBA工作了8年多,管理和优化服务器的性能.在我的空闲时间,我想为宇宙和我的同事做一些有用的事情.这就是我们最终为SQL Server和Azure 提供免费索引维护工具的方法. 理念 每隔一段时间,人们在处理他们的优先事项时,可能就像一个手指式电池 - 一个激励充电只持续一闪,然后一切都消失了.直到最近,我在这一生活观察中也不例外.我经常被想法创造属于我自己的想法所困扰,但优先级从一个变为另一个并且没有完成任何事情. DevArt开发用于开发和管理SQL Server…
一.问题背景 现网出现慢查询,在500万数量级的情况下,单表查询速度在30多秒,需要对sql进行优化,sql如下: 我在测试环境构造了500万条数据,模拟了这个慢查询. 简单来说,就是查询一定条件下,都有哪些用户的.很简单的sql,可以看到,查询耗时为37秒. 说一下app_account字段的分布情况,随机生成了5000个不同的随机数,然后分布到了这500万条数据里,平均来说,每个app_account都会有1000个是重复的值,种类共有5000个. 二.看执行计划 可以看到,group by…
前言 之前我们已经讨论过动态SQL查询呢?这里为何再来探讨一番呢?因为其中还是存在一定问题,如标题所言,很多面试题也好或者有些博客也好都在说在执行动态SQL查询时sp_executesql的性能比exec好,但是事实真是如此?下面我们来一探究竟. 探讨sp_executesql和exec执行动态SQL查询性能 首先我们创建如下测试表. CREATE TABLE dbo.TestDynamicSQL ( Col1 INT PRIMARY KEY , Col2 SMALLINT NOT NULL ,…
前言 历史考试选择题:黄花岗起义第一枪谁开的? A宋教仁 B孙中山 C黄兴 D徐锡麟,考生选C. 又看第二题:黄花岗起义第二枪谁开的? 考生傻了,就选了个B. 接着看第三题:黄花岗起义中,第三枪谁开的? 考生疯了,胡乱选了A. 考试出来就去找出卷老师.老师拿出课本说:黄兴连开三枪,揭开了黄花岗起义的序幕.考生:...... CASE表达式 之概念 相信大家都用过CASE表达式,尤其是做一些统计功能的时候,用的特别多,可真要说什么是 CASE表达式,我估计还真没几个人能清楚的表述出来.CASE表达…
前言 开心一刻 有一天,麻雀遇见一只乌鸦. 麻雀问:你是啥子鸟哟 ? 乌鸦说:我是凤凰. 麻雀说:哪有你龟儿子这么黢黑的凤凰 ? 乌鸦说:你懂个铲铲,老子是烧锅炉的凤凰. 子查询 讲子查询之前,我们先来看看视图,何谓视图 ? 视图是基于 SQL 语句的结果集的可视化的表,包含行和列,就像一个真实的表,但只是一张虚拟表,我们可以将其视作为一张普通的表:视图只供数据查询,不能进行数据更改,也不能保存数据,查询数据来源于我们的实体表:说的简单点,视图就是复杂 SELECT 语句的一个代号,为查询提供便…
前言 开心一刻   一个中国小孩参加国外的脱口秀节目,因为语言不通,于是找了一个翻译. 主持人问:“Who is your favorite singer ?” 翻译:”你最喜欢哪个歌手啊 ?” 小孩兴奋地回答:”Michael Jackson” 翻译转身对主持人说:”迈克尔-杰克逊” 主持人看着翻译:"你说什么 ?" 电视机前的观众:"我怎么有点蒙?"  NULL NULL 用于表示缺失的值或遗漏的未知数据,不是某种具体类型的值.数据表中的 NULL 值表示该值所…