2 @Index 和 1 @Index 与休眠中的多列之间的区别?

Difference between 2 @Index and 1 @Index with multiple columns in hibernate?

关于

的查询性能会有什么不同
@Table(name = "users", indexes = {
    @Index(columnList = "code", name = "code"),
    @Index(columnList = "current_city", name = "cbplayer_current_city_hidx")
})

对比

@Table(name = "users", indexes = {
    @Index(columnList = "code, current_city", name = "both"),
})    

这两个都会为代码创建一个b-tree,为当前城市创建一个b-tree吗?或者第二个会创建某种涉及两者的 b 树吗?

第一个似乎更灵活,我可以查询代码,然后随着系统的发展而查询 code/current_city,而无需做 DBA 工作(亲吻直到需要更好的性能)。

我真的很好奇这里的区别。

要查看生成的内容,请使用命令行工具 mysql 并使用 SHOW CREATE TABLE 命令。

复合INDEX(a,bb)什么时候有用? separate INDEX(a), INDEX(bb) 什么时候有用?一些例子

WHERE a = 'xyz'               -- INDEX(a) or INDEX(a,bb)
WHERE a = 'xyz' AND bb = 123  -- INDEX(a,bb) or INDEX(bb,a); others are less good
WHERE a = 'xyz' AND bb >= 123 -- INDEX(a,bb); others are less good
WHERE a >= 'xyz' AND bb = 123 -- INDEX(bb,a) is best
WHERE bb = 123                -- INDEX(bb) or INDEX(bb,a)

也就是说,最佳索引取决于重要的查询是什么。

另一方面,如果 table 只有一百行,如果没有任何索引,您不太可能注意到任何性能问题。

另一个讨论:http://mysql.rjweb.org/doc.php/index_cookbook_mysql