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 只有一百行,如果没有任何索引,您不太可能注意到任何性能问题。
关于
的查询性能会有什么不同@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 只有一百行,如果没有任何索引,您不太可能注意到任何性能问题。