mysql(innodb)会支持更高的查询率(每秒查询数),如(A)或(B)吗?
(一个)SELECT * FROM t1 WHERE pkey BETWEEN 2000 and 2001 AND x > 300
在 (A) 中,主键选择 800 行的范围。“x”未编入索引。有一个范围查找和 1 个长度为 200kb 的连续读取。
(乙)(SELECT * FROM t1 WHERE pkey BETWEEN 2000 and 2001 AND x > 300) UNION ALL (SELECT * FROM t1 WHERE pkey BETWEEN 3000 and 3001 AND x > 300)
在 (B) 中,主键选择 200 行的范围。“x”未编入索引。有两个范围查找和 2 个长度为 50kb 的连续读取。
综上所述,(A) 有 2 倍的磁盘寻道,但有 1/2 的连续读取。相反,(B) 有一半的磁盘寻道,但连续读取是 2 倍。
一般来说,我认为搜索速度很慢,连续读取速度很快,但我认为额外的一次搜索比读取 10MB 的额外数据更可取。大致的权衡点在哪里?