基于这个答案: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”。
首先要感谢大家!
发布于 2013-01-04 11:48:37
隐藏在另一个受欢迎的帖子https://stackoverflow.com/a/4120191/1382306中,它看起来像
“在处理覆盖索引(多个列上的索引)时,查询需要解决列的顺序,在索引列定义中从左到右。语句中的列顺序无关紧要,只有列1、2和3的列顺序才能使用-语句在使用索引之前需要引用列1。如果只引用列2或3,则不能使用1/2/3的覆盖索引。
在MySQL中,查询中的每个SELECT/语句只能使用一个索引(子查询/等被视为单独的语句)。而且MySQL允许的每个表的空间量是有限制的。此外,在索引列上运行函数会使索引无用。
在这个答案中也有一个很好的索引陷阱列表。
在我的例子中,由于“在查询中每个表只能使用一个索引”,我猜应该只使用(?,SELECT_2.table1id)。
https://stackoverflow.com/questions/14150630
复制相似问题