我想知道MySQL将如何处理该声明?如果列A,B都被索引。
我想有两种方法可以做。
一个。从A == 123中选择所有记录作为临时结果 湾从临时结果中找到最大B一并返回。 时间复杂度可能是O(lgN + m)。
一步获取记录,换句话说,T(N)= O(lgN)?
提前致谢。
答案 0 :(得分:0)
我的直觉告诉我,除非B可以为空并且B稀疏地填充(真正稀疏,低至1%或更低以及编号小于每个索引键A的平均值数的10%),以降序检查B 然后检查这些记录上的A = 123是值得的,MySql在此查询中不会有B的索引条。
很可能它只会使用A(如果A足够有选择性),从表中检索记录,按B降序排序并返回结果。
这意味着你的第一个案例,O(N + m)。 N与表格大小成正比,这也是统计上平均有多少记录满足A = {any x}