-
学习元项目编码注意事项
普通类 -
- 支持
- 批判
- 提问
- 解释
- 补充
- 删除
-
-
关于sql语句编写
由于in和not in方法效率低下,所以程序员在编写SQL代码时尽量不要使用in和not in。如果真的需要使用,请先告知杨现民师兄和陈敏,大家讨论后再使用。一般来说,in语句都可以用链表查询的方法替代。下面是从网上收集到的解决方案:
1.join方案
如:(SELECT Info.id,Info.PName, Info.remark, Info.impdate,Info.upstate, bakInfo.id AS bakID FROM Info left JOIN bakInfo ON Info.id = bakInfo.id ) as t where t.bakID is null and t.upstate=0
GO
SET STATISTICS TIME OFF;此操作执行时间:
SQL Server 分析和编译时间:
CPU 时间 = 247 毫秒,占用时间 = 247 毫秒。SQL Server 执行时间:
CPU 时间 = 406 毫秒,占用时间 = 475 毫秒。(100000 行受影响)
SQL Server 分析和编译时间:
CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。--更改当前表状态
update Info set upstate=1
FROM Info INNER JOIN
bakInfo ON Info.id = bakInfo.id
此操作执行时间:SQL Server 分析和编译时间:
CPU 时间 = 4 毫秒,占用时间 = 4 毫秒。SQL Server 执行时间:
CPU 时间 = 219 毫秒,占用时间 = 259 毫秒。(100000 行受影响)
SQL Server 分析和编译时间:
CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。--删除当前表数据
delete from Info
FROM Info INNER JOIN
bakInfo ON Info.id = bakInfo.id
where Info.upstate=1
此操作执行时间:SQL Server 分析和编译时间:
CPU 时间 = 177 毫秒,占用时间 = 177 毫秒。SQL Server 执行时间:
CPU 时间 = 219 毫秒,占用时间 = 550 毫秒。(100000 行受影响)
SQL Server 分析和编译时间:
CPU 时间 = 0 毫秒,占用时间 = 1 毫秒。可以看出使用join方案比使用not in 和in执行时间要短很多了
【以上信息来自于】http://www.gdwg.net/edu/sjk/mssql/2010/0529/83632_2.html
2.临时表
前言:
今天在写一条sql查询语句,其需要从一个表A中返回所有A不再表B中的结果集,当然,这种实现最方便的方法就是用NOT IN。
如:select a.* from a where a.id not in (select id from b where…..)
我们大家都知道很多sql方面的文章都建议大家尽量不要使用NOT IN的方法,因为这种方法的效率不高。那有没有替代的办法呢?(声明因为当时的情况要求不能使用储存过程,所以只有写sql语句)和同事实验了一下,结果用以下方法实现了。
目的:
替换NOT IN 方法。
说明:
在单条SQL语句中,不使用储存过程,不使用临时表。使用存储过程和临时表不再本文的讨论范围中。
实现:
例:
表aa:结构
id value ……
1 a
2 b
3 c
4 d
5 e
6 f
---------------------------------------------------------------------------------------------
表bb:结构
id ……
2
4
6
现在我要取表aa里的所有字段,条件是aa的id值不在bb的id值当中(not in)。也就是应该返回所有id为奇数的字段
使用NOT IN的SQL:
select * from aa where id not in(select id from bb)
就一条语句,简单明了,可惜效率不高,而且公司规范要求尽量不用NOT IN,害我费了好大事crying……
改造后的SQL:
select cc.id,cc.value from (select aa.*,bb.id as tempcolum from aa left join bb on aa.id=bb.id) as cc where cc.tempcolum is null
解释一下。在开始时候我最早想用内联表的方式,可是无论如何也每找到一个好的办法,干脆就是实现不了。(大家有好办法指教先。)
后来自己考虑了一下NOT IN的逻辑,A NOT IN B就是说A是主体,B起到的之不过是一个判断作用,我们可以先把所有符合条件的A记录全部查询出来而不管他是否属于B,然后再从这里剔除值同时属于B的部分。
Select aa.* from aa
但是仅仅这样是不够的,我们无法利用这个返回的结果集判断是否属于B并排除它,为此,我想到构造一个临时的列,这个列的值应该是在A的结果集范围内,所有在B中的值。而这个结果集的主体应该是所有满足先决条件的A,然后加上满足条件的B,而不满足条件的B值则不再考虑范围内,所以用了left join。
这一段是关键,不知道我阐述清楚了没有,没明白的继续看
于是就出来这一句。
select aa.*,bb.id as tempcolum from aa left join bb on aa.id=bb.id
没看明白上面的看结果集就明白了
id value tempcolum
---------------------------------------------
1 a NULL
2 b 2
3 c NULL
4 d 4
5 e NULL
6 f 6
看到这个结果集我想大家都明白我的意思了吧。对了,我们就是要对这个结果集进行二次操作。
相信大家都看到了,生成的这个结果集包含了所有符合条件的表aa字段和bb的id,如果aa中的值在bb中,则tempcolum的值就不会为null,如果不在就是null,这样我们只需要从这个结果集里查询所有tempcolum值为null的就可以满足我们的要求了
所以最终的sql出来了
select cc.id,cc.value from (select aa.*,bb.id as tempcolum from aa left join bb on aa.id=bb.id) as cc where cc.tempcolum is null
我们只需要id和value两个字段,其他的就不要了。
结果
id value
-------------------------
1 a
3 c
5 e
ok,实现了,希望对大家有帮助。
【以上信息来源于】http://www.cnblogs.com/bbcw/archive/2005/02/04/101684.html
-
关于HTML代码编写
【中英文改版】
1、凡是用到英文js的,请统一在名字后加后缀_en,比如kopage.js,对应的英文版为kopage_en.js
2、jsp页面中根据language的值调用不同的js,请用代码
<% if(language==null||language.equals("")||language.equals("ch")){
%>
<script type="text/javascript" src="/script/kopage.js"></script>
<%}else{
%>
<script type="text/javascript" src="/script/kopageforen.js"></script>
<%}%>
防止出现空指针异常。首先要判断是否为null
3、所有用到英文单引号的,先用中文单引号代替,避免出现js字符截取4、学习元平台中所有英文版的字体都为Arial
【Textarea默认很多空格】请将textarea开始标签和结束标签放到同一行
【所有链接鼠标显示样式】
style=“cursor:pointer;”
-
关于java代码编写
【声明规范】
(1)一行声明一个变量。
(2)不要将不同类型变量的声明放在同一行。
(3)只在代码块的开始处声明变量。
(4)所有的变量必须在声明时初始化。
(5)避免声明的局部变量覆盖上一级声明的变量。
(6)方法与方法之间以空行分隔。
【变量名、方法名、文件名书写规范】
变量名、文件名的书写要在见名知意的基础上尽量简短,要使别人只看名称便能明白变量、方法、文件所具有的功能,对于可能不太好理解的名称要给出注释。
【文件开头注释】
所有源文件开头都应该有一个C语言风格的注释,包括此文件的作用、描述、版权信息、作者、版本等。下面的可供参考:
/*** <p>* Title: 教育电视台学习超市* </p>* <p>* Description:* </p>* <p>* Copyright: Copyright (c) 2008* </p>* <p>* Company: 北京师科阳光信息技术有限公司* </p>** @author 陈寿财、王海箭* @version 1.0*/【方法注释】java中的方法也要加上注释,包括方法的作用、作者、创建时间、参数说明、返回值、抛出的异常等。下面的注释可供参考:/*** ajax方式创建或者修改学习社区下的一个讨论版块* @author songjie 2011.09.03* @param mapping* @param form* @param request* @param response* @return* @throws IOException*/ -
-
- 标签:
- aa
- bb
- 注意事项
- select
- 使用
- 编码
- 所有
- 学习元
- 毫秒
- sql
- 方法
- 时间
- id
-
学习元评论 (0条)
聪明如你,不妨在这 发表你的看法与心得 ~