2012年12月22日

摘要: Execution Plan查询计划展示了SQL Server试图如何执行查询以及实际上是如何执行查询的;查询计划最佳使用方法不是查看一个查询计划,解决查询中性能最坏的地方,而是你认为SQL Server会如何执行你查询,并通过查询计划验证SQL Server是否按照你设想执行了查询计划查询执行过程:T-SQL解析,检查查询的语句是否符合语法对象名称确定,确定查询中对象名称指的是哪个底层对象查询优化,根据可用的统计信息,决定如何执行查询;不一定使用可能的最佳的查询计划,其目的是在合理的时间范围内使用满意的查询计划,因为寻找最佳的查询计划可能会消耗更多的时间,查询越复杂,需要评估查询计划的时间越 阅读全文
posted @ 2012-12-22 23:21 马啸西风 阅读(436) 评论(0) 推荐(0) 编辑
 
摘要: Heap就是数据页之间没有顺序以及数据页中数据行之间没有顺序的表,是最简单的表结构,数据行被加到数据页第一个可用位置,如果当前页没有足够空间的话,就创建额外的数据页;SQL Server在称为Index Allocation Map的内部结构中使用一个条目跟踪可用的数据页,这个条目的index_id=0在堆上执行的操作:INSERT:每个新行都放在第一个可用页上UPDATE:数据行即可以仍然在同一页上(如果大小合适的话),或者被从当前页删除,并放到第一个可用页上DELETE:释放当前页的空间,数据没有被覆盖,空间仅仅是被标记为可以被重用(即数据不会立即被删除,只有在需要在这块被删除的空间上分配 阅读全文
posted @ 2012-12-22 23:20 马啸西风 阅读(426) 评论(0) 推荐(0) 编辑
 
摘要: 当SQL Server访问表中的数据时,它扫描表的所有页或者使用索引减少需要扫描的行;有时SQL Server会创建临时索引以提高查询性能,但是这样的行为不是数据库管理员或者程序员可控的行为,并且只针对单次查询;除标准类型索引外,还包括其他类型索引:Full Text Index:提供灵活的文本查询Spatial Index:为Geometry、Geography类型创建的索引Primary and Secondary XML Index:帮助查询XML数据ANSI SQL的定义中并没有描述索引,索引被认为是数据库内部实现细节,SQL Server使用索引提高性能和实现特定的约束;当你创建主键 阅读全文
posted @ 2012-12-22 23:18 马啸西风 阅读(380) 评论(0) 推荐(0) 编辑
 
摘要: Indexed Views:通过在视图上创建聚集索引将视图物化,通常用来提高查询性能,复杂的Join和聚合函数都被提前计算出来,避免在查询执行这些操作,以此来提高性能Views通常用来聚集Focus、简化、定制用户对数据库的视角,其优点包括:允许用户集中在和他们相关或者允许他们操作的那一小块数据上隐藏了查询的复杂性,用户不需要关心视图中涉及的复杂查询,他们可以像表一样操作视图简化用户许可管理,即提供一种安全机制,只允许用户通过视图访问数据,不允许用户直接操作底层表为应用程序提供导出的数据,许多应用程序没有权限执行存储过程或者T-SQL代码,只可以查询数据,视图将应用程序需要导出的数据独立出来提 阅读全文
posted @ 2012-12-22 23:16 马啸西风 阅读(2685) 评论(0) 推荐(1) 编辑
 
摘要: Table可以用来作为安全边界,即表级别安全许可;SQL Server中支持Column、Table级别安全许可,在SQL Server中还没有行级别安全许可,不过可以通过视图、存储过程、触发器来实现行级别安全许可A candidate key用来唯一标示一行,主键就是从潜在的多个candidate key中选择的;通常来说,如果表经过了正确的规范化处理的话,一个表应该只有一个candidate key可以用来作为主键,但这不是绝对的;主键必须唯一、不允许为null、不允许修改surrogate key用来作为表的唯一标示,不是根据真正的数据得来的,和表中其他列不相关;Natural Key则 阅读全文
posted @ 2012-12-22 23:13 马啸西风 阅读(1350) 评论(0) 推荐(0) 编辑
 
摘要: 数据类型的选择帮助优化查询,比如针对int类型列和针对文本类型列可能会生成完全不同的查询计划三种数据类型:系统数据类型别名数据类型:用户可以为系统数据类型提供一个别名,并且可以对数据类型做进一步限制,这样可以保持数据库和应用程序的一致性用户自定义数据类型:引入的托管代码中的数据类型,包括CLR中的系统数据类型和CLR中用户自定义数据类型整数数据类型:tinyint存储的是一个字节(8位),值范围是0-255smallint存储的是两字节(16位),值范围是-32768-32767int存储的是四字节(32位),值范围是-2147483648-2147483647bigint存储的是八字节,值范 阅读全文
posted @ 2012-12-22 23:11 马啸西风 阅读(7158) 评论(0) 推荐(0) 编辑

2012年10月31日

摘要: 当用户重新访问网站时,Application library caching能够提高启动性能,当用户第一次访问网页的时候,Silverlight插件下载应用程序包和所有的外部程序集,这些文件会被加入到浏览器缓存中,以便在后续的访问中能够重用这些文件,关于Application library caching的详细介绍,可以参考下面的文档:http://msdn.microsoft.com/en-us/library/dd833069(v=vs.95).aspx 如果在实际项目中启用了Application library caching,并将多个公用程序集打包到一个ZIP包中,那么这些程... 阅读全文
posted @ 2012-10-31 17:25 马啸西风 阅读(283) 评论(0) 推荐(0) 编辑

2012年9月28日

摘要: 今天开发过程中遇到一个概率性发生的bug,时而出现时而消失,而且在测试工程中无法重现,即使在实际的开发工程中也无法稳定重现。 首先说一下bug的背景:开发界面时需要一个带有提示文本的TextBox,即在TextBox的Text属性为空时,显示提示文本,比如经常见到的登录界面的用户名文本框,在没有输入任何文本时提示用户“请输入用户名...”这样的提示文本,姑且将其这个文本框命名为TipTextBox,该类从TextBox继承,TipTextBox逻辑比较简单,就是重写TextBox的Template,在TextBox的Template中加入了一个TextBlock用来显示提示文本,这个Te... 阅读全文
posted @ 2012-09-28 00:07 马啸西风 阅读(516) 评论(1) 推荐(0) 编辑

2011年3月7日

摘要: 最近一直在北京找工作,上网不是特别方便,也没有时间更新自己的博客。今天就来谈谈DataGridView里怎么更好的实现下拉列表吧! 方式一:如下图所示,该方式也是较为简单的一种。 你只需要添加一列类型为DataGridViewComboBoxColumn的列,然后添加数据源即可。但是我们看到这种方式的下拉列表看起来并不是十分的美观,至少我个人是这么觉得的。 方式二:如下图所示。 如上所示,这样只有在每次点击特定列的单元格时,才会显示下拉列表。其实原理也非常简单,只需要在选择DataGridView的单元格时,判断是不是要显示下拉列表的列,如果是的话,将下拉列表显示在点击的单元格内,对原有的单. 阅读全文
posted @ 2011-03-07 16:37 马啸西风 阅读(24073) 评论(6) 推荐(3) 编辑

2011年1月25日

摘要: C#的集合功能可谓十分强大,这里着重探讨集合中非常重要的两个接口:IEnumerableT和IEnumeratorT.  首先查看如下代码:代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--1classStudent2{3publicint_id;4publicstring_name;56publicStudent(intid,stringname)7{8this._id=id;9this._name=name;10}1112publi 阅读全文
posted @ 2011-01-25 21:32 马啸西风 阅读(454) 评论(0) 推荐(0) 编辑