[ 
https://issues.apache.org/jira/browse/DERBY-4971?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12981755#action_12981755
 ] 

Knut Anders Hatlen commented on DERBY-4971:
-------------------------------------------

It looks like the problem here is that the optimizer is slow, not that it picks 
a bad plan. Most of the time is spent preparing the statement. The time spent 
executing it (or re-executing an already prepared statement) is similar for the 
two:

When optimizer chooses join order:

ij version 10.7
ij> connect 'jdbc:derby:rita.derby;user=rita';
ij> elapsedtime on;
ij> prepare ps as '

SELECT journey.transport_company AS journey_transport_provider,
(...)
FROM
  movement AS dispatched
(...)
ELAPSED TIME = 45034 milliseconds
ij> execute ps;
(...)
1 row selected
ELAPSED TIME = 2084 milliseconds
ij> execute ps;
(...)
1 row selected
ELAPSED TIME = 693 milliseconds
ij> execute ps;
(...)
1 row selected
ELAPSED TIME = 353 milliseconds


Fixed join order:

ij version 10.7
ij> connect 'jdbc:derby:rita.derby;user=rita';
ij> elapsedtime on;
ij> prepare ps as '

SELECT journey.transport_company AS journey_transport_provider,
(...)
FROM -- DERBY-PROPERTIES joinOrder = FIXED
  movement AS dispatched
(...)
ELAPSED TIME = 3684 milliseconds
ij> execute ps;
(...)
1 row selected
ELAPSED TIME = 2325 milliseconds
ij> execute ps;
(...)
1 row selected
ELAPSED TIME = 485 milliseconds
ij> execute ps;
(...)
1 row selected
ELAPSED TIME = 380 milliseconds
(...)
1 row selected
ELAPSED TIME = 291 milliseconds

> Query runs 10 times more slowly with optimizer turned ON
> --------------------------------------------------------
>
>                 Key: DERBY-4971
>                 URL: https://issues.apache.org/jira/browse/DERBY-4971
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.7.1.1
>            Reporter: Chris Wilson
>         Attachments: optimizer-off.sql, optimizer-on.sql, rita.derby.zip
>
>
> Derby takes 10 times as long to execute the attached query on the attached 
> database when the optimizer is allowed to choose its own join order.
> chris@fen-desktop2(tmp)$ cat ij 
> #!/bin/sh
> DERBY_DIR=/home/chris/.m2/repository/org/apache/derby
> DERBY_VER=10.7.1.1
> DERBY_JAR=$DERBY_DIR/derby/$DERBY_VER/derby-$DERBY_VER.jar
> TOOLS_JAR=$DERBY_DIR/derbytools/$DERBY_VER/derbytools-$DERBY_VER.jar
> java -cp $DERBY_JAR:$TOOLS_JAR $OPTIONS org.apache.derby.tools.ij "$@"
> chris@fen-desktop2(tmp)$ time ./ij optimizer-on.sql 
> ij version 10.7
> ij> connect 'jdbc:derby:;databaseName=/tmp/rita.derby;user=rita';
> ij> SELECT journey.transport_company AS journey_transport_provider, ...
> 1 row selected
> ij> quit;
> real  0m47.459s
> user  0m47.067s
> sys   0m0.344s
> chris@fen-desktop2(tmp)$ time ./ij optimizer-off.sql 
> ...
> real  0m3.913s
> user  0m4.100s
> sys   0m0.148s

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to