基于此答案:https://stackoverflow.com/a/2349824/1382306
A 和 B 的用法是否有进一步的指导方针,或者它们是否同等重要?
我有一个 SELECT FROM table1, table2 WHERE table2.table1id = table1.id AND table2.constant = ?
。
就我而言,我知道吗?来自用户定义的变量。这有什么不同吗,因为它永远不会改变?
我能否碰碰运气并要求解释针对 (A,B) 和 (B) 所使用的逻辑,例如“找到所有具有 A 的 B,然后搜索所有 B”。
非常感谢!
最佳答案
你没有在你的问题中写任何问题,但我假设你想知道你应该使用什么样的索引。
在 table2
上,你应该在 (constant, table1id)
上有一个索引,在 table1
上你有你的主键 id
无论如何。如果您只从 table2
中选择几列,您也应该将它们包含在索引中。这样 MySQL 就可以直接从索引中回答您的查询,甚至无需加载 table2
的数据。它通过在索引中查找 constant
来做到这一点,它可以这样做是因为 constant
是索引的最左边的列,然后还加载 table1id
从指数。如果发生这种情况,您可以在 EXPLAIN
的输出中看到 Using index。
关于mysql - 两列索引 (A,B) 和索引 (B) 为常量时的 A 和 B 指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14150630/