[ 
https://issues.apache.org/jira/browse/DERBY-5066?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

George Xu updated DERBY-5066:
-----------------------------


Additional information with the execution plan... the full table scan happened.
==========================================================
Statement Text: 
        SELECT TIMESTAMP, HOSTPORT AS "HOST ID", PID, SESSIONID, REQUESTID, 
SUBREQUESTID, STEPID, TID, COMPONENT, BUILDNUM, LOGLEVELORIG AS "LEVEL", 
LOGGER, OPERATION, OBJECTTYPE, OBJECTPATH, STATUS, MESSAGE, DATA, NDX FROM 
LOGDATA786780 where PID > 0 ORDER BY PID
Parse Time: 94
Bind Time: 31
Optimize Time: 63
Generate Time: 15
Compile Time: 203
Execute Time: 4937
Begin Compilation Timestamp : 2011-02-24 16:14:04.895
End Compilation Timestamp :   2011-02-24 16:14:05.098
Begin Execution Timestamp :   2011-02-24 16:14:05.114
End Execution Timestamp :     2011-02-24 16:14:12.411
Statement Execution Plan Text: 
Sort ResultSet:
Number of opens = 1
Rows input = 69612
Rows returned = 0
Eliminate duplicates = false
In sorted order = false
Sort information: 
        Number of merge runs=38
        Number of rows input=69612
        Number of rows output=69612
        Size of merge runs=[1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 
1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 
1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 1791, 
1791, 1791, 1791, 1791]
        Sort type=external
        constructor time (milliseconds) = 0
        open time (milliseconds) = 4937
        next time (milliseconds) = 0
        close time (milliseconds) = 0
        optimizer estimated row count:        22153.56
        optimizer estimated cost:       230567.20

Source result set:
        Project-Restrict ResultSet (2):
        Number of opens = 1
        Rows seen = 69612
        Rows filtered = 0
        restriction = false
        projection = true
                constructor time (milliseconds) = 0
                open time (milliseconds) = 0
                next time (milliseconds) = 842
                close time (milliseconds) = 32
                restriction time (milliseconds) = 0
                projection time (milliseconds) = 0
                optimizer estimated row count:        22153.56
                optimizer estimated cost:       230567.20

        Source result set:
                Table Scan ResultSet for LOGDATA786780 at read committed 
isolation level using instantaneous share row locking chosen by the optimizer
                Number of opens = 1
                Rows seen = 69612
                Rows filtered = 0
                Fetch Size = 16
                        constructor time (milliseconds) = 0
                        open time (milliseconds) = 0
                        next time (milliseconds) = 827
                        close time (milliseconds) = 32
                        next time in milliseconds/row = 0

                scan information:
                        Bit set of columns fetched={0, 8, 9, 10, 11, 13, 14, 
16, 17, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28}
                        Number of columns fetched=19
                        Number of pages visited=1608
                        Number of rows qualified=69612
                        Number of rows visited=69612
                        Scan type=heap
                        start position:
                                null
                        stop position:
                                null
                        qualifiers:
                                Column[0][0] Id: 9
                                Operator: <=
                                Ordered nulls: false
                                Unknown return value: true
                                Negate comparison result: true
                        optimizer estimated row count:        22153.56
                        optimizer estimated cost:       230567.20


> full table scan when index is used, taking extremely long time in JDBC
> ----------------------------------------------------------------------
>
>                 Key: DERBY-5066
>                 URL: https://issues.apache.org/jira/browse/DERBY-5066
>             Project: Derby
>          Issue Type: Bug
>          Components: Eclipse Plug-in, JDBC
>    Affects Versions: 10.7.1.1
>         Environment: Windows XP environment
>            Reporter: George Xu
>
> When a very large table (500k rows) is used with a column is indexed.   
> select * from tab where pid > 0 order by pid takes extremely longer time than 
> select * from tab order by pid.  Actually, it is 100 times slower.  However, 
> in IJ, ther performance seems to be similar.  PID column is indexed.
> Here is the code snipplet
> import java.sql.Connection;
> import java.sql.DriverManager;
> import java.sql.ResultSet;
> import java.sql.SQLException;
> import java.sql.Statement;
> public class TestPerformance {
>       //20343 mill-sec
>       static String s1 = "SELECT TIMESTAMP, HOSTPORT AS \"HOST ID\", PID, 
> SESSIONID, REQUESTID, " +
>       "SUBREQUESTID, STEPID, TID, COMPONENT, BUILDNUM, " +
>       "LOGLEVELORIG AS \"LEVEL\", LOGGER, OPERATION, OBJECTTYPE, OBJECTPATH, 
> " +
>       "STATUS, MESSAGE, DATA, NDX FROM LOGDATA871218 where PID > 0 ORDER BY 
> PID";     
>       //297 million sec.
>       static String s2 = "SELECT TIMESTAMP, HOSTPORT AS \"HOST ID\", PID, 
> SESSIONID, REQUESTID, " +
>       "SUBREQUESTID, STEPID, TID, COMPONENT, BUILDNUM, " +
>       "LOGLEVELORIG AS \"LEVEL\", LOGGER, OPERATION, OBJECTTYPE, OBJECTPATH, 
> " +
>       "STATUS, MESSAGE, DATA, NDX FROM LOGDATA871218 ORDER BY PID";   
>       public static void main(String[] args) throws InstantiationException, 
> IllegalAccessException, ClassNotFoundException {
>               Statement stmt3;
>               try {
>                       
> //connect'jdbc:derby:C:/devroot/runtime-New_configuration/LogXData';
>                       String db = 
> "C:/devroot/runtime-New_configuration/LogXData";
>                       String driver = "org.apache.derby.jdbc.EmbeddedDriver";
>                       Class.forName(driver).newInstance();
>                       Connection con = 
> DriverManager.getConnection("jdbc:derby:"+db);                 
>                       stmt3 = con.createStatement(ResultSet.FETCH_FORWARD, 
>                               ResultSet.TYPE_FORWARD_ONLY);
>                       long startTime3 = System.currentTimeMillis();
>                       ResultSet rs3 = stmt3.executeQuery(s1); 
>                       long elapsed3 = System.currentTimeMillis() - startTime3;
>                       System.out.println("Statment.executeQuery Dup: " + 
> elapsed3); 
>               } catch (SQLException e) {
>                       // TODO Auto-generated catch block
>                       e.printStackTrace();
>               }                       
>       }
> }

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to