V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
unregister
V2EX  ›  程序员

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

  •  
  •   unregister · 2022-08-20 20:56:44 +08:00 · 1267 次点击
    这是一个创建于 619 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    第 1 条附言  ·  2022-08-20 23:57:53 +08:00
    搞了半天我本地单表查了一下也需要几十秒的时间,可能是本地服务器查询效率的问题所导致的。
    3 条回复    2022-08-20 22:31:15 +08:00
    LowBi
        1
    LowBi  
       2022-08-20 22:00:48 +08:00 via Android
    虽然业务不一样,但我直接放弃了 sharding 自带的查询,自己联库表,每个库表里子查询来减少查询范围。我的算是分裤分表较少的情况,建议加个子查询
    unregister
        2
    unregister  
    OP
       2022-08-20 22:30:05 +08:00
    @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
       2022-08-20 22:31:15 +08:00
    KEY `idx_uuid` (`uuid`) USING BTREE,
    KEY `idx_time` (`time`), 创建的索引这样的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1221 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 17:36 · PVG 01:36 · LAX 10:36 · JFK 13:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.