iBatis的Map文件中,格式化SQL文和非格式化SQL文的效率差异

本文的主要参数来自于iBatis的邮件列表,自己暂时还没有做完整的测试。相信有些是具体参数设置所引起的,比如statement caching等等。
所谓的格式化SQL文和非格式化SQL文是指,为了提高可读性写法的不同。具体可以从详细的例子看出来。

Example 1.0:


<insert id="insertPerson" parameterClass="springibatis.Person">
       <![CDATA[
       INSERT INTO people (
               last_name,
                 first_name,
                 age
               ) VALUES (
                 #lastName#,
                 #firstName#,
                 #age#
               );
       ]]>
</insert>

Example 1.1:

<insert id="insertPerson" parameterClass="springibatis.Person">
       <![CDATA[
       INSERT INTO people (last_name, first_name, age) VALUES (#lastName#,#firstName#, #age#);
       ]]>
</insert>

下面是具体测试参数
1.) 使用(Format A)插入10,000条数据,花费大概12-15 seconds。
(Format A)

<![CDATA[
INSERT INTO people (
       last_name,
       first_name,
       age
) VALUES (
       #lastName#,
       #firstName#,
       #age#
);
]]>

2.) 使用(Format B)插入10,000条数据,花费大概7-8 seconds.
(Format B)

INSERT INTO people (
       last_name,
       first_name,
       age
) VALUES (
       #lastName#,
       #firstName#,
       #age#
);

3.) 使用(Format C)插入10,000条数据,花费大概3-4 seconds.
(Format C)

INSERT INTO people (last_name, first_name, age) VALUES
(#lastName#,#firstName#,#age#);

————————————————————————————————————————
以上是别人测试的记录,看到SQL书写格式对性能有如此的影响,比较惊讶,推测是因为statement caching设置的问题。有时间我要自己尝试一下。

0 Responses to "iBatis的Map文件中,格式化SQL文和非格式化SQL文的效率差异"