摘要: 续上一篇 Sql Server查询性能优化之创建合理的索引(上篇)   数据库索引分为聚集索引和非聚集索引,聚集索引就是物理索引,也就是数据的物理的存储顺序,聚集索引的叶子节点就是数据行本身;非聚集索引是逻辑索引,也可以简单的认为是对聚集索引建立的索引,一般来说聚集索引的键就是非聚集索引的叶子节点(在不使用include时)。 关于索引的选择   对于索引类型来说没什么好选的,一般来说聚集索引是必须的(有特殊需要的另说),非聚集索引看实际需要灵活建立。因此对于索引来说主要是决定在那些列上建立索引,尤其是对于聚集索引这点非常重要。 聚集索引   聚集索引作为最重要的索引往往被我们所忽略,而其最大的优势就是大范围数据查询有着较高的效率,因此聚集索引列的选择往往对数据库性能有着灰常大的影响。为了尽量发挥聚集索引在大范围数据查找上的优势,推荐按以下顺序选择聚集索引列。 聚集索引字段选择优先级:时间字段>>会进行大范围查询的列>>具有唯一值的有实际意义的字段>>自增列ID 阅读全文
posted @ 2012-07-03 07:09 懒惰的肥兔 阅读(8368) 评论(8) 推荐(24) 编辑
摘要: 本文主要作为优化查询性能的一些知识储备,感觉知识点有些散,不知道起啥名字好,独立成文又没有达到把每个点都说透彻那样的高度,且就当做创建合理索引的一个楔子把。本文对实际应用没有太大的指导意义,但可以加深我们对SQL Server理解,夯实我们的基本功,就像小说里面的武功一样,没有足够的内功基础,给你再好的秘籍你也成不了武林高手。序言 写这篇文章时表示鸭梨很大,主要是对SQL Server的认识很有限,远远不足把这个话题说清楚,不过还是鼓起勇气写出来,也算作自己对索引认识的一个总结。索引这潭水太深了,应用场景不同,所建立的索引在有些情况下运行良好,有些情况下可能完全无效。而对于索引理解、认识... 阅读全文
posted @ 2012-06-11 05:38 懒惰的肥兔 阅读(10591) 评论(16) 推荐(35) 编辑
摘要: Effective C#(第2版)中文名称为: C#高效编程 改进C#代码的50个行之有效的办法(第2版) 这本书的中文名字起的很蛋疼,其它Effective系列的书名都是Effective XXX,在网上商城输入Effective就能全找到,唯独这本死活找不到,后来偶然机会才知到原来中文名称叫做C#高效编程 改进C#代码的50个行之有效的办法,真是蛋疼至极。 第一章 C#语言习惯 条目1 使用属性而不是可访问的数据成员 条目2 用运行时常量(readonly)而不是编译期常量(const) 条目3 推荐使用 is 或 as 操作符而不是强制类型转换 条目4 使用 Conditional 特性而不是#if 条件编译 条目5 为类型提供 ToString() 方法 条目6 理解几个等同性判断之间的关系 条目7 理解 GetHashCode() 的陷阱 条目8 推荐使用查询语法而不是循环 条目9 避免在API中使用转换操作符 条目10 使用可选参数减少方法重载的数量 条目11 理解短小方法的优势 小结 阅读全文
posted @ 2012-06-07 12:05 懒惰的肥兔 阅读(2706) 评论(1) 推荐(4) 编辑
摘要: 小小程序猿SQL Server认知的成长 1.没毕业或工作没多久,只知道有数据库、SQL这么个东东,浑然分不清SQL和Sql Server Oracle、MySql的关系,通常认为SQL就是SQL Server 2.工作好几年了,也写过不少SQl,却浑然不知道索引为何物,只知道数据库有索引这么个东西,分不清聚集索引和非聚集索引,只知道查询慢了建个索引查询就快了,到头来索引也建了不少,查询也确实快了,偶然问之:汝建之索引为何类型?答曰:。。。 3.终于受到刺激开始奋发图强,买书,gg查资料终于知道原来索引分为聚集索引和非聚集索引,顿时泪流满面,呜呼哀哉,吾终知索引为何物也。 4.再进一步学习之亦知聚集索引为物理索引、非聚集索引为逻辑索引,聚集索引为数据的存储顺序,非聚集索引是逻辑索引既对聚集索引的索引 5.再往后学会了查看执行计划,通过查询计划终于对查询过程有了大概了解,也知道了聚集索引扫描和表扫描没有用到索引,看到聚集索引、索引查找高兴的眉飞色舞,看到RID、键查找暗自窃喜,瞧,键查找肯定就是关键字查找了,用着索引呢,效率肯定高,于是每次写完sql都要观看 阅读全文
posted @ 2012-05-21 07:28 懒惰的肥兔 阅读(19927) 评论(74) 推荐(103) 编辑
摘要: 最后更新:2012-07-19SQL Server 系列浅析Sql Server参数化查询(推荐)Sql Server参数化查询之where in和like实现详解Sql Server参数化查询之where in和like实现之xml和DataTable传参Sql Server表结构及索引查询器Sql Server查询性能优化之走出索引的误区(推荐)Sql Server查询性能优化之不可小觑的书签查找Sql Server查询性能优化之创建合理的索引(上篇)Sql Server查询性能优化之创建合理的索引(下篇)NuGet系列NuGet学习笔记(1) 初识NuGet及快速安装使用NuGet学习笔 阅读全文
posted @ 2012-05-20 12:29 懒惰的肥兔 阅读(1720) 评论(3) 推荐(2) 编辑
摘要: 据了解绝大多数开发人员对于索引的理解都是一知半解,局限于大多数日常工作没有机会、也什么没有必要去关心、了解索引,实在哪天某个查询太慢了找到查询条件建个索引就ok,哪天又有个查询慢了,再建立个索引就是,或者干脆把整个查询SQL直接发给DBA,让DBA直接帮忙优化了,所以造成的状况就是开发人员对于索引的理解、认识很局限,以下就把我个人对于索引的理解及浅薄认识和大家分享下,希望能解除一些大家的疑惑,一起走出索引的误区 误区1.在表上建立了索引,在查询时用到了索引的列,索引就一定会生效   首先明确下这样的观点是错误的,SQL Server查询优化器是基于开销进行选择的优化器,通过一系列复杂判断来决定是否使用索引、使用什么类型索引、使用那个索引。SQL Server内部维护着索引列上的数据的统计,统计信息会随着索引列内容的变化而变化,索引的有效期完全取决于索引列上的统计信息,随着数据的变化关于索引的检索机制也随之变化。对于查询优化器来说始终保持查询开销最低始终是其的不二选择,如果一个非聚集索引的列上有大量的重复值,那么这个索引就不会有什么存在的意义,这也是为什么不建议在类似性别, 阅读全文
posted @ 2012-05-06 12:14 懒惰的肥兔 阅读(30948) 评论(60) 推荐(84) 编辑
摘要: 因经常需要处理大数量的表,因此查看表结构、数据量、以及索引情况基本上成为了常态,无奈生产环境的数据库不让我们直接访问,因此想要了解到生产环境的数据库的表结构和索引信息变得很麻烦需要经常找DBA帮忙找,而想查看具体某个表的数据量使用 select count(1) from table方法的效率实在慢的无法忍受,正所谓求人不如求己,花了点时间自己做了个查看数据库表结构和索引的小工具顺便温习了下系统表一举两得,喜欢的朋友可以拿去用用。 工具功能很简单但胜在实用(尤其是不让开发人员用企业管理连接生产环境数据库时,简直是一大杀器),可以提高不少效率   1.根据链接字符串列出服务器上所有的数据库以及表。   2.查看表的记录数、字段及索引(包含覆盖索引)信息。 默认界面如下 阅读全文
posted @ 2012-05-05 17:01 懒惰的肥兔 阅读(7388) 评论(11) 推荐(11) 编辑
摘要: 在上一篇NuGet学习笔记(2) 使用图形化界面打包自己的类库 中讲解了如何打包自己的类库,接下来进行最重要的一步,从零开始搭建属于自己的NuGet服务器,诚然园子里及其它很多地方已经有完全写好的NuGet服务源码,我们只需要拿来发布一下就ok了,运行也很正常,但作为一名合格的程序猿,不建议这种拿来主义尤其时你自己可以搞定的时候,用别人写好的东西总有些心里不踏实,当有一天它出问题了你的悲剧就开始了,下面进入我们今天的主题 创建NuGetServer Web站点 1.新建Web站点,选择 文件-->新建项目-->Asp.Net 空 Web应用程序 阅读全文
posted @ 2012-05-01 17:19 懒惰的肥兔 阅读(16070) 评论(19) 推荐(34) 编辑
摘要: 上文NuGet学习笔记(1) 初识NuGet及快速安装使用说到NuGet相对于我们最重要的功能是能够搭建自己的NuGet服务器,实现公司内部类库的轻松共享更新。在安装好NuGet扩展后,我们已经能够通过NuGet轻松下载自己需要的类库,下面来说一说如何将自己的项目类库进行打包发布 使用图形界面打包自己的类库 NuGet可以使用NuGet.exe在命令行下进行类库打包,也可以使用图形化界面进行打包,估计很多朋友都和我一样对不熟悉的命令行有些感冒,所以在此仅讲述下使用图形化界面进行类库打包 1.首先下载 包包管理器 NuGetPackageExplorer,顾名思义,包包管理器可以用来创建新的类库包,也可以浏览已经创建好的类库包 2.下载完成后,双击 NuGetPackageExplorer.application 进行安装,安装完成后会在桌面上生成一个NuGet Package Explorer 的快捷方式 阅读全文
posted @ 2012-05-01 08:42 懒惰的肥兔 阅读(11139) 评论(10) 推荐(17) 编辑
摘要: 初次认识NuGet是在去年把项目升级为MVC3的时候,当时看到工具菜单多一项Library Package Manager,右键项目文件多了一项Manage Nuget Packages...,这是个神马玩意儿,当时是一头雾水,后台查了些资料才知到NuGet是 Visual Studio的一个扩展,引用dudu的话来说就是管理程序的包包,可以参考msdn上这篇文章使用 NuGet 管理项目库以及咱们博客园站长dudu写的程序员,用NuGet管理好你的类库,有些类似java中常用的maven 简单的说NuGet可以是我们的工作更方便,当我们的项目里要引用到的一些库时候,比如JQuery、Newtonsoft.Json、log4net等,我们需要从网上下载这些库,然后依次拷贝到各个项目中,当有的类库有更新时又不得不再重复一遍很是繁琐 ,这时就可以考虑使用NuGet来帮我们管理和更新这些类库,而且更新类库时会自动添加类库的相关引用,方便至极。当然网上一些我们常用的类库更新频率不是很高而且即便出了新版本我们也没必要总是保持最新,故这点对我们的帮助比较有限,个人认为NuGet最大的好处在于可以 阅读全文
posted @ 2012-04-30 07:55 懒惰的肥兔 阅读(14964) 评论(10) 推荐(22) 编辑