• 请不要在回答技术问题时复制粘贴 AI 生成的内容
unregister
V2EX  ›  程序员

Shardingsphere 本地 Dao 层查询需要 50 多秒,单表查只需要几十毫秒。

  •  
  •   unregister · Aug 20, 2022 · 1728 views
    This topic created in 1362 days ago, the information mentioned may be changed or developed.

    数据库是 Mysql 的,分表策略是 shardingColumn UUID % 表数量 确定这个租户是属于表几。 目前只需要查一个租户表的数据,测试数据量大约几十万,Dao 层查 50 多秒,单表查很快,为啥使用 shardingsphere 这么慢?

    语句是一个时间的范围查询 select field1,field2,field3 FROM table where field1 = #{UUID} and time <= #{time}

    Supplement 1  ·  Aug 20, 2022
    搞了半天我本地单表查了一下也需要几十秒的时间,可能是本地服务器查询效率的问题所导致的。
    3 replies    2022-08-20 22:31:15 +08:00
    LowBi
        1
    LowBi  
       Aug 20, 2022 via Android
    虽然业务不一样,但我直接放弃了 sharding 自带的查询,自己联库表,每个库表里子查询来减少查询范围。我的算是分裤分表较少的情况,建议加个子查询
    unregister
        2
    unregister  
    OP
       Aug 20, 2022
    @LowBi select temp.*(select field1,field2,field3 FROM table_1 where field1 = #{UUID} and time <= #{time}) as temp 是这样处理的吗?这样在 navicat 里执行查询时间就变成几十秒了。还有这个 sharding-jdbc 我感觉也是索引失效了。
    unregister
        3
    unregister  
    OP
       Aug 20, 2022
    KEY `idx_uuid` (`uuid`) USING BTREE,
    KEY `idx_time` (`time`), 创建的索引这样的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3894 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 10:23 · PVG 18:23 · LAX 03:23 · JFK 06:23
    ♥ Do have faith in what you're doing.