场景描述:搜索条件具有不定性、模糊性、(极)低区分度的大范围数据分页查询业务。
举例说明:某个表里3年时间逐渐(时间平滑)生成了1亿条数据,现在要分页查询某半年(比如从2022-03-01到2022-08-01)的明细数据。如果用mysql来支持,会按照“创建时间”来查询且“创建时间”为索引,但是因为查询条件中“创建时间”跨了半年范围太大、区分度不够导致其索引“失效”,最后sql会导致全表扫描、cpu使用率增高,如果这个sql同时多些人查询,可能数据库cpu使用会接近100%,严重影响其它功能的使用。这时一般我们会将数据同步一份到Elasticsearch,用ES的检索能力满足上述需求。
问题:请问如果将mysql替换成TiDB,能否直接满足上述场景?其在该场景下的性能如何?
- 可以加hint,强制走索引;
- 可以考虑分区表,分区裁剪。
分页查询,条件列有索引,返回数据少还好。看你并发有多大了。
TiDB中,这种情况是会走索引,不会走全表扫描。
只有创建时间吗?可以把SQL贴出来吗?
此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。