联合索引的列该怎么排序
要建一个 (A, B) 的联合索引,把哪一列放最左边,取决于【0】。
⚠️ 同一份联合索引,三种条件三种下场
建一个 (cat, v) 的联合索引,用三种条件各查一次。输出三次的取数方式(用 / 隔开)。 t 表:200 行 id 1 ~ 200,主键 cat 只有 "A" 和 "B" 两种值(奇数
只给第二列条件,碰了多少行
还是那个 (cat, v) 索引,只给第二列条件,数一数碰了多少行。输出两个数:碰了几行、表一共几行(用 / 隔开)。 t 表:200 行 id 1 ~ 200,主键 cat 只有 "A" 和 "B&
自己写:把最左那一列的条件补上
上一题那条查询用不上索引。给它补上最左那一列的条件,让索引重新生效。输出两样:取数方式、碰了几行(用 / 隔开)。 t 表:200 行 id 1 ~ 200,主键 cat 只有 "A" 和 "B&qu
自己写:只给最左那一列也能用
还是 (cat, v) 索引,只给最左那一列条件。输出两样:取数方式、碰了几行(用 / 隔开)。 t 表:200 行 id 1 ~ 200,主键 cat 只有 "A" 和 "B" 两种值(奇
自己写:一个联合索引 vs 两个单列索引
对比两种建法:一个 (cat, v) 联合索引,vs cat 和 v 各一个单列索引。用"只给 v 条件"这一条查询,输出两种建法下的取数方式(用 / 隔开)。 t 表:200 行 id 1 ~ 200,主键 ca
什么叫"回表"
顺着索引找到了那一行的位置,还得再去原表取一次其余的列。这一步叫【0】。
什么样的索引能免掉回表
一个索引能让某条查询不用回表,条件是【0】。
覆盖索引的代价是什么
为了让索引覆盖更多查询,把更多列塞进索引。代价是【0】。
⚠️ 多取一列,覆盖就没了
建一个 (cat, v) 的索引,一次只取索引里有的列,一次多取一列 note。输出两次的取数方式全句(用 / 隔开,只取 USING 后面那部分的第一个词)。 t 表:200 行 id 1 ~ 200,主键 cat 只有 &qu