小编use*_*637的帖子

H2数据库:虽然使用索引,但查询速度慢

使用H2 1.3.176.

1)表定义:

CREATE TABLE TEST(ID BIGINT PRIMARY KEY, ACCOUNT BIGINT, TXID BIGINT); 
Run Code Online (Sandbox Code Playgroud)

2)将值插入表中:

INSERT INTO TEST SELECT X, RAND()*100, X FROM SYSTEM_RANGE(1, 1000000)
Run Code Online (Sandbox Code Playgroud)

3)创建用于我的查询的索引:

CREATE Unique INDEX IDX_TEST_ACCOUNT_TXID ON `test` (account, txId DESC);
Run Code Online (Sandbox Code Playgroud)

4)执行以下查询:

explain analyze
select txid from test where account=22 AND txid<9999999 order by txid desc limit 25
Run Code Online (Sandbox Code Playgroud)

我得到以下执行计划:

SELECT
    TXID
FROM PUBLIC.TEST
    /* PUBLIC.IDX_TEST_ACCOUNT_TXID: ACCOUNT = 22
        AND TXID < 9999999
     */
    /* scanCount: 9867 */
WHERE (ACCOUNT = 22)
    AND (TXID < 9999999)
ORDER BY …
Run Code Online (Sandbox Code Playgroud)

database indexing h2

3
推荐指数
1
解决办法
2721
查看次数

标签 统计

database ×1

h2 ×1

indexing ×1