我应该定义索引(A)和索引(B),或索引(A,B),还是两者都定义?

TMS*_*TMS 6 mysql sql database indexing

在我的表格中,我有两个密切相关的列A和B.我应该考虑哪些因素来决定是否创建:

  • 指数(A)和指数(B),
  • 指数(A,B),
  • 以上都是?

如果我改变了怎么办:

  1. 只使用像where A = 5 and B = 10(并且从不喜欢where A = 5)的查询,
  2. 也使用像where A > 3 and A < 10 and B > 12 and B < 20,
  3. 经常使用order by (A, B),
  4. 经常使用group by (A, B)

注意:我故意没有提供有关我的具体案例的更多详细信息,因为我想要一个也会为其他人服务的一般答案.我使用的是mysql,但是如果你给出更一般的答案,那么一般来说SQL会很棒.

Kon*_*rak 5

好的,当你有索引(A,B)时,MySQL也可以将它用作索引(A).声明AB和A毫无意义.然而,声明AB和B确实如此

所以你有这些选择:

  1. 指数(A,B)
  2. 指数(A,B)和指数(B)
  3. 指数(A)和指数(B)

  • 如果你从不在没有'A`列的'B`列上搜索,你也可以单独使用`Index(A,B)`.要记住的是**'索引(A,B)`不能用于单独搜索****.这是合乎逻辑的:想到姓氏上的字典,名字:在那里找到名字'thomas'的所有人都会很困难. (4认同)