I'd put an index on nanotime

/* scanCount: 2244038 */ indicates it is reading over 2 million records to find the ones you want!


On 11/07/2012 4:07 PM, Bartosz Skorupa wrote:
For

EXPLAIN ANALYZE SELECT logentry.date , logentry.nanotime FROM logentry, log_categories
WHERE logentry.category = log_categories.id <http://log_categories.id>
AND logentry.nanotime >= 10089487311026
AND logentry.nanotime <= 10090280303361
ORDER BY 2 ASC NULLS LAST LIMIT 165 OFFSET 0;

i got

SELECT
    LOGENTRY.DATE,
    LOGENTRY.NANOTIME
FROM PUBLIC.LOG_CATEGORIES
    /* PUBLIC.LOG_CATEGORIES.tableScan */
    /* scanCount: 9 */
INNER JOIN PUBLIC.LOGENTRY
/* PUBLIC.CONSTRAINT_INDEX_A6: CATEGORY = LOG_CATEGORIES.ID <http://LOG_CATEGORIES.ID> */
    ON 1=1
    /* scanCount: 2244038 */
WHERE (LOGENTRY.NANOTIME <= 10090280303361)
    AND ((LOGENTRY.NANOTIME >= 10089487311026)
AND (LOGENTRY.CATEGORY = LOG_CATEGORIES.ID <http://LOG_CATEGORIES.ID>))
ORDER BY 2 NULLS LAST
LIMIT 165 OFFSET 0
/*
total: 165276
LOGENTRY.CONSTRAINT_INDEX_A6 read: 10216 (6%)
LOGENTRY.LOGENTRY_DATA read: 155060 (93%)
*/

and for

EXPLAIN SELECT logentry.date , logentry.nanotime FROM logentry, log_categories
WHERE logentry.category = log_categories.id <http://log_categories.id>
AND logentry.nanotime >= 10089487311026
AND logentry.nanotime <= 10090280303361
ORDER BY 2 ASC NULLS LAST LIMIT 165 OFFSET 0;

i got

SELECT
    LOGENTRY.DATE,
    LOGENTRY.NANOTIME
FROM PUBLIC.LOG_CATEGORIES
    /* PUBLIC.LOG_CATEGORIES.tableScan */
INNER JOIN PUBLIC.LOGENTRY
/* PUBLIC.CONSTRAINT_INDEX_A6: CATEGORY = LOG_CATEGORIES.ID <http://LOG_CATEGORIES.ID> */
    ON 1=1
WHERE (LOGENTRY.NANOTIME <= 10090280303361)
    AND ((LOGENTRY.NANOTIME >= 10089487311026)
AND (LOGENTRY.CATEGORY = LOG_CATEGORIES.ID <http://LOG_CATEGORIES.ID>))
ORDER BY 2 NULLS LAST
LIMIT 165 OFFSET 0

Pozdrawiam
Bartosz Skorupa



2012/7/11 Ryan How <[email protected] <mailto:[email protected]>>

    Do you have an index on nanotime?

    If you run EXPLAIN on your query it can tell you if it is using an
    index or table scan.

    
http://www.h2database.com/html/grammar.html?highlight=Explain&search=explain#explain
    
<http://www.h2database.com/html/grammar.html?highlight=Explain&search=explain#explain>





    On 11/07/2012 3:32 PM, Bartosz Skorupa wrote:

        I have a simple DB with  table defined :

        CREATE TABLE "LOGENTRY"(
        AUTOID BIGINT default '(NEXT VALUE FOR
        PUBLIC.SYSTEM_SEQUENCE_10A53561_6D15_428A_820B_7EA1722BCB5D)'
        not null,
        DATE BIGINT not null,
        NANOTIME BIGINT not null,
        MESSAGE CLOB,
        ID BIGINT not null,
        LEVEL SMALLINT not null,
        CATEGORY INTEGER not null,
        REQUESTERCLASS VARCHAR,
        REQUESTERMETHOD VARCHAR,
        LINENUMBER INTEGER,
        THREADID INTEGER not null,
        THREADNAME VARCHAR not null,
        THREADGROUP VARCHAR not null,
        THREADPRIORITY SMALLINT not null,
        STACKTRACE CLOB,
        FOREIGN KEY (CATEGORY) REFERENCES LOG_CATEGORIES(ID))

        CREATE TABLE "LOGGINGDB20120711_081524"."PUBLIC"."LOG_CATEGORIES"(
        ID INTEGER PRIMARY KEY not null,
        CATEGORY VARCHAR not null)

        I run a example query

        SELECT logentry.date , logentry.nanotime FROM logentry,
        log_categories
        WHERE logentry.category = log_categories.id
        <http://log_categories.id>
        AND logentry.nanotime >= 4351362368770
        AND logentry.nanotime <= 4352180803886
        ORDER BY 2 ASC NULLS LAST LIMIT 165 OFFSET 0;

        This query run about ~1300ms.

        The same DB and the same query on Derby run ~3ms, what is
        wrong with this?

-- You received this message because you are subscribed to the
        Google Groups "H2 Database" group.
        To view this discussion on the web visit
        https://groups.google.com/d/msg/h2-database/-/GPd5Wv0qYtcJ.
        To post to this group, send email to
        [email protected]
        <mailto:[email protected]>.
        To unsubscribe from this group, send email to
        [email protected]
        <mailto:h2-database%[email protected]>.
        For more options, visit this group at
        http://groups.google.com/group/h2-database?hl=en.



-- You received this message because you are subscribed to the Google
    Groups "H2 Database" group.
    To post to this group, send email to [email protected]
    <mailto:[email protected]>.
    To unsubscribe from this group, send email to
    [email protected]
    <mailto:h2-database%[email protected]>.
    For more options, visit this group at
    http://groups.google.com/group/h2-database?hl=en.


--
You received this message because you are subscribed to the Google Groups "H2 Database" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/h2-database?hl=en.

--
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/h2-database?hl=en.

Reply via email to