摘要:
1. 文件命名组织1-1文件命名1. 文件名遵从Pascal命名法,无特殊情况,扩展名小写。2. 使用统一而又通用的文件扩展名: C# 类.cs1-2文件注释1. 在每个文件头必须包含以下注释说明1 在每个文件头必须包含以下注释说明 /*---------------------------------------------------------------- // Copyright (C) 2004 软件有限公司 // 版权所有。 // // 文件名: // 文件功能描述: // // // 创建标识: // // 修改标识: // 修改描述: // // 修改标识: // 修改描述: 阅读全文
摘要:
不久前重新安装了Windows7,在安装了VS2010 开发平台之后,将网站发布到IIS,访问发生如下错误:HTTP 错误 500.21 - Internal Server Error处理程序“NickLeeCallbackHandler”在其模块列表中有一个错误模块“ManagedPipelineHandler”原因:在安装Framework v4.0之后,再启用IIS,导致Framework没有完全安装解决:开始->所有程序->附件->鼠标右键点击“命令提示符”->以管理员身份运行->%windir%\Microsoft.NET\Framework\v4.0. 阅读全文
摘要:
selecttop页大小* fromtable1 whereid> (selectmax(id)from (selecttop((页码-1)*页大小)idfromtable1orderbyid)asT ) orderbyid 在大数据量的情况下,特别是在查询最后几页的时候,查询时间一般不会超过9秒;而用其他存储过程,在实践中就会导致超时,所以这个存储过程非常适用于大容量数据库的查询。 笔者希望能够通过对以上存储过程的解析,能给大家带来一定的启示,并给工作带来一定的效率提升,同时希望同行提出更优秀的实时数据分页算法. 四、聚集索引的重要性和如何选择聚集索引 在上一... 阅读全文
摘要:
在选择即不重复值,又容易分辨大小的列时,我们通常会选择主键。下表列出了笔者用有着1000万数据的办公自动化系统中的表,在以GID(GID是主键,但并不是聚集索引。)为排序列、提取gid,fariqi,title字段,分别以第1、10、100、500、1000、1万、10万、25万、50万页为例,测试以上三种分页方案的执行速度:(单位:毫秒) 页 码方案1方案2方案3160307610461663100107672013050054012943831000171104702501万24796450014010万3832642283155325万28140128720 233050万1216861 阅读全文
摘要:
但这个存储过程有一个致命的缺点,就是它含有NOT IN字样。虽然我可以把它改造为: SELECT TOP 页大小 * FROM Table1 WHERE not exists (select * from (select top (页大小*页数) * from table1 order by id) b where b.id=a.id ) order by id 即,用not exists来代替not in,但我们前面已经谈过了,二者的执行效率实际上是没有区别的。 既便如此,用TOP 结合NOT IN的这个方法还是比用游标要来得快一些。 虽然用not exists并不能挽救上... 阅读全文
摘要:
笔者曾在网上看到了一篇小短文《从数据表中取出第n条到第m条的记录的方法》,全文如下: 从publish 表中取出第 n 条到第 m 条的记录:SELECT TOP m-n+1 * FROM publish WHERE (id NOT IN (SELECT TOP n-1 id FROM publish)) id 为publish 表的关键字 我当时看到这篇文章的时候,真的是精神为之一振,觉得思路非常得好。等到后来,我在作办公自动化系统(ASP.NET+ C#+SQL SERVER)的时候,忽然想起了这篇文章,我想如果把这个语句改造一下,这就可能是一个非常好的分页存储过程。于是我就满网... 阅读全文
摘要:
12、高效的TOP 事实上,在查询和提取超大容量的数据集时,影响数据库响应时间的最大因素不是数据查找,而是物理的I/0操作。如: select top 10 * from ( select top 10000 gid,fariqi,title from tgongwen where neibuyonghu='办公室'order by gid desc) as a order by gid asc 这条语句,从理论上讲,整条语句的执行时间应该比子句的执行时间长,但事实相反。因为,子句执行后返回的是10000条记录,而整条语句仅返回10条语句,所以影响数据库响应时间最大的因素是物理 阅读全文
摘要:
10、count(*)不比count(字段)慢 某些资料上说:用*会统计所有列,显然要比一个世界的列名效率低。这种说法其实是没有根据的。我们来看: select count(*) from Tgongwen 用时:1500毫秒 select count(gid) from Tgongwen 用时:1483毫秒 select count(fariqi) from Tgongwen 用时:3140毫秒 select count(title) from Tgongwen 用时:52050毫秒 从以上可以看出,如果用count(*)和用count(主键)的速度是相当的,而count... 阅读全文
摘要:
8、union并不绝对比or的执行效率高 我们前面已经谈到了在where子句中使用or会引起全表扫描,一般的,我所见过的资料都是推荐这里用union来代替or。事实证明,这种说法对于大部分都是适用的。 select gid,fariqi,neibuyonghu,reader,title from Tgongwen where fariqi='2004-9-16' or gid>9990000 用时:68秒。扫描计数 1,逻辑读 404008 次,物理读 283 次,预读 392163 次。 select gid,fariqi,neibuyonghu,reader,titl 阅读全文
摘要:
5、尽量少用NOT 6、exists 和 in 的执行效率是一样的 很多资料上都显示说,exists要比in的执行效率要高,同时应尽可能的用not exists来代替not in。但事实上,我试验了一下,发现二者无论是前面带不带not,二者之间的执行效率都是一样的。因为涉及子查询,我们试验这次用SQL SERVER自带的pubs数据库。运行前我们可以把SQL SERVER的statistics I/O状态打开。 (1)select title,price from titles where title_id in (select title_id from sales where qt... 阅读全文