tidb索引请教

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:

【TiDB 版本】4.0.0

【问题描述】
请问下,假设表有A,B,C,D,E这几个字段,
如果查询where涉及到:A,B,C 和A,C和A,D,E
是不是必须建对应的这3个索引才能使查询快?有没有其他办法不需要每种查询条件都建索引?谢谢!


若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

索引的创建不能仅仅看查询使用到了那些字段,需要查看下字段的选择性是否好,query的调用频率等。
你的三个查询使用的到字段来看, ABC、和AC 都使用到AC, 如果ACB选择性都不错,可以做一个联合索引ACB。这样ABC和AC都可以使用到这个索引。
还可以判断下ADE三个字段的选择性,如果A选择性好,DE选择行比较差,那么也不用新建索引,查询会使用到ACB索引。
另外还需要综合调用频率来查看,哪个query调用频率高,酌情分析优化。

2 个赞

:+1:

如果建立了,ABC\AC\A 3个索引,有哪些不好的地方?插入更新会慢很多?然后存储量大很多吗?不知TiDB在联合索引方面的使用和mysql是否一致?

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。