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

2022-08-20 20:56:44 +08:00
 unregister

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

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

1363 次点击
所在节点    程序员
3 条回复
LowBi
2022-08-20 22:00:48 +08:00
虽然业务不一样,但我直接放弃了 sharding 自带的查询,自己联库表,每个库表里子查询来减少查询范围。我的算是分裤分表较少的情况,建议加个子查询
unregister
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
2022-08-20 22:31:15 +08:00
KEY `idx_uuid` (`uuid`) USING BTREE,
KEY `idx_time` (`time`), 创建的索引这样的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/874234

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX