摘要: 其实对于非专业的数据库操作人员来讲,例如软件开发人员,在很大程度上都搞不清楚数据库索引的一些基本知识,有些是知其一不知其二,或者是知其然不知其所以然。造成这种情况的主要原因我觉的是行业原因,有很多公司都有自己的DBA团队,他们会帮助你优化SQL,开发人员即使不懂优化问题也不大,所以开发人员对这方面也就不会下太多功夫去了解SQL优化,但如果公司没有这样的DBA呢,就只能靠程序员自己了。 最近突然想起前一阵和一朋友的聊天,当时他问我的问题是一个非常普通的问题:说说SQL聚集索引和非聚集索引的区别。大家可能认为这个问题难度不大,认为太熟悉了,也许不会感兴趣,但你真能说清楚吗?其实要想说明白这两者的. 阅读全文
posted @ 2011-04-21 15:08 Code & Life 阅读(23531) 评论(7) 推荐(7) 编辑
摘要: 刚开始用SQL Server的时候,我没有用显示执行计划来对查询进行分析。我曾经一直认为我递交的SQL查询都是最优的,而忽略了查询性能究竟如何,从而对“执行计划”重视不够。在我职业初期,我只要能获取数据就很开心,而不去考虑数据是如何返回的,“执行计划”对我的查询作了什么工作。我以为SQL Server会自己去处理查询的性能问题的。作为一个刚进入IT行业或者刚学到新技术的软件工程师,在编写代码前不太可能有时间去学习其实必须掌握的知识。也许这是因为IT行业竞争太激烈的缘故。随着时间的流逝,数据库容量慢慢变大了。终于某天,客户对应用系统的查询性能感到不满意了。他面带怒容来找我,抱怨由于查询太慢,使得 阅读全文
posted @ 2011-04-19 14:15 Code & Life 阅读(3689) 评论(3) 推荐(2) 编辑
摘要: 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t where num=03.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。4.应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎 阅读全文
posted @ 2011-04-19 14:09 Code & Life 阅读(6547) 评论(7) 推荐(4) 编辑
摘要: 关于数据库优化方面的文章很多,但是有的写的似是而非,有的不切实际,对一个数据库来说,只能做到更优,不可能最优,并且由于实际需求不同,优化方案还是有所差异,根据实际需要关心的方面(速度、存储空间、可维护性、可拓展性)来优化数据库,而这些方面往往又是相互矛盾的,下面结合网上的一些看法和自己的一些观点做个总结。 一个系统的性能的提高,不单单是试运行或者维护阶段的性能调优,也不单单是开发阶段的事情,而是在整个软件生命周期都需要注意。所以我希望按照软件生命周期的不同阶段来总结数据库性能优化相关的注意事项。 一、 分析阶段 一般来说,在系统分析阶段往往有太多需要关注的地方,系统各种功能性、可用性、可靠性、 阅读全文
posted @ 2011-04-19 13:53 Code & Life 阅读(12952) 评论(0) 推荐(0) 编辑
摘要: 一,Remoting的定义 简单的说是一种分布式的处理方式。.Net Remoting提供了一个对象通过应用程序与另外一个对象进行通讯,交互的框架。二,Remoting的过程概述 客户端通过Remoting访问通道(channel),获取服务端对象(只是对象的引用,不是实际的对象),再通过代理解析为客户端对象,序列化在客户端运行。 1,Remoting的两种通道:TCP(一般用于局域网,TcpChannel类型默认使用二进制格式序列化消息对象,因此它具有更高的传输性能。),HTTP(能在Internet上穿越防火墙传输序列化消息流。默认情况下,HttpChannel类型使用Soap格式序列化消 阅读全文
posted @ 2011-04-12 16:26 Code & Life 阅读(427) 评论(0) 推荐(0) 编辑
摘要: 1,group by方法查数据: selectcount(num),max(name)fromstudent--列出重复的记录数,并列出他的name属性 groupbynum havingcount(num)>1--按num分组后找出表中num列重复,即出现次数大于一次删数据: 1deletefromstudent2 groupbynum3 havingcount(num)>1 这样的话就把所有重复的都删除了。2,用distinct方法 -对于小的表比较有用1createtabletable_newasselectdistinct*fromtable1minux2truncate. 阅读全文
posted @ 2011-04-12 10:32 Code & Life 阅读(391) 评论(0) 推荐(0) 编辑