`
zhaoningbo
  • 浏览: 620559 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java拼SQL语句时为了排版而使用str+str对性能的影响

    博客分类:
  • java
阅读更多

引言:

 

    在拼SQL语句时,都知道尽量用StringBuffer来做拼接。但仍有人为了排版好看,在.appand()内部使用str+str的方式编写。

 

    可以看到下面列的SQL写法1(建议别这写):

        String sql = "select " + resultColumn.trim() + " from "
                + ConstUtil.OWNER + "Table1" + "where CompanyCode "
                + "in(select CompanyCode" + " from " + ConstUtil.OWNER
                + ".secumain " + "where secucode= " + code;

    还有这样的写法2(到底如何):

        String sql = "" 
            + "select * from dbo.Table1 " 
            + "  where CompanyCode in(" 
            + "    select CompanyCode from dbo.secumain "
            + "    where secucode='595804040'"
            + "  )";

    这些语句到底对性能(速度)影响有多大。

 

正文:

 

    写法2这样的片断,中间没有穿插变量,因此JVM可能会存在一个“优化”的行为——即一次尽可能的读入最长的String,然后才存放入“数据区-唯一表”。也就是说,格式化写与连写,生成字节码运行时可能没什么本质区别。对此笔者做了个测试。测试源代码可以在文尾的附件中下载到。

 

    测试在此:>>>(此处略去关于略去多少字的说明)<<<

 

    经过测试

 

    结果:

        10万次连接时,常量,耗时0毫秒;常量连接间穿插变量,耗时547毫秒。

    证明:

        引言中的“写法2”拼接方式是可行的,不影响拼接速度,优化机制是存在的。

 

 

 

 

 

 

 

分享到:
评论
2 楼 zhaoningbo 2011-06-14  
cjxgotofly 写道
用StringBuffer好象效率上要好些吧.同时也是为了排版.美观

恩,威武!
1 楼 cjxgotofly 2011-06-14  
用StringBuffer好象效率上要好些吧.同时也是为了排版.美观

相关推荐

    【精美排版】JavaWeb考试一.doc

    - 执行SQL语句的对象是`Statement`或`PreparedStatement`。选项C的`java.sql.Statement`是正确的。 9. **Session对象**: - `session.invalidate()`方法使得Session失效,清除Session中的所有数据。 10. **JSP...

    2021-2022计算机二级等级考试试题及答案No.5027.docx

    22. 字符数组与字符串长度:`strcpy(str1, str2)`将`str2`复制到`str1`,然后`strlen(str1)`返回复制后的字符串长度,不包括结束符,所以结果是3。 23. 剪贴板操作:剪贴板中的信息可以被多次覆盖,信息会随着新的...

    2021-2022计算机二级等级考试试题及答案No.10482.docx

    查询通常指的是预先定义好的SQL SELECT语句文件,而视图则更像是基于这些查询结果的一个虚拟表。换句话说,查询是用来检索数据的命令,而视图则是查询结果的一种持久化表示形式。 ### 5. 面向对象编程的特点 面向...

    MySQL产生随机数并连接字符串的方法示例

    为了方便开发和测试,可以使用一些在线工具来辅助处理SQL语句。例如,`SQL在线压缩/格式化工具`可以帮助你压缩或格式化SQL语句,使其更易于阅读;`SQL代码在线格式化美化工具`则可以对SQL代码进行美化和排版;而`...

    2021-2022计算机二级等级考试试题及答案No.15953.docx

    16. 逻辑运算与三元运算符:在给定的程序段中,当b1为true时,b3的结果为b2的值,而b2未赋值,因此默认为false。 17. Python文件操作:该程序会将列表`[90, 87, 93]`写入到text.csv文件中,以逗号分隔,所以输出...

    2021-2022计算机二级等级考试试题及答案No.5486.docx

    Java SQL语句执行 - **知识点**: PreparedStatement 类用于执行带参数的SQL语句。 - **应用场景**: 数据库操作。 - **正确答案**: B.PreparedStatement类 - **重要性**: 使用PreparedStatement可以有效地防止SQL...

    2021-2022计算机二级等级考试试题及答案No.11992.docx

    ` 是SQL语句中用于指定当前使用的数据库的方法。其他选项如 `CREATE DATABASE db_name;` 用于创建数据库,`SHOW DATABASES;` 显示所有数据库列表,`DROP DATABASE db_name;` 删除指定的数据库。 - **应用场景**:在...

    2021-2022计算机二级等级考试试题及答案No.17665.docx

    5. **SQL SELECT语句**:在SQL中,`INTO CURSOR`用于将查询结果存储到游标中,方便后续处理。 6. **Word打印设置**:在Word的打印对话框中,页码范围允许用户指定要打印的具体页面。 7. **Rtrim函数**:在许多编程...

    2021-2022计算机二级等级考试试题及答案No.464.docx

    计算机二级等级考试主要涵盖计算机基础知识、程序设计语言、数据库、操作系统...25. **存储过程调用**:调用该存储过程的方式是在SQL语句中使用CALL关键字,例如 `CALL test(12)`,其中12是传递给存储过程的参数x的值。

    notes_to_self:python,LaTeX,Jupyter等的使用方法和摘要

    【笔记自我】:Python、LaTeX与Jupyter的使用指南 在编程领域,Python是一种广泛使用的高级编程语言,因其简洁的语法和强大的功能而受到欢迎。LaTeX则是一种排版系统,尤其适合处理数学公式和专业文档。Jupyter ...

    普伦吉

    "Верстка"是俄语中的“布局”或“排版”的意思,在IT行业中通常指的是网页设计或前端开发过程中对页面元素进行布局和样式设置的过程。 PHP(Hypertext Preprocessor,超文本预处理器)是一种广泛使用的开源...

Global site tag (gtag.js) - Google Analytics