Будет ли mysql (innodb) поддерживать более высокую частоту (количество запросов в секунду) таких запросов, как (A) или (B)?
(А) SELECT * FROM t1 WHERE pkey BETWEEN 2000 and 2001 AND x > 300
В (A) первичный ключ выбирает диапазон из 800 строк. «х» не индексируется. есть один поиск диапазона и одно непрерывное чтение длиной 200 КБ.
(В) (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 строк. «х» не индексируется. есть два поиска диапазона и 2 смежных чтения длиной 50 КБ.
Таким образом, чтобы подвести итог, (A) имеет 2x, которое ищет диск, но 1/2-ое столько же непрерывного чтения. И наоборот, (B) имеет половину поиска диска, но вдвое больше непрерывного чтения.
В общем, я предполагаю, что поиск медленный, а непрерывное чтение быстрое, но я предполагаю, что один дополнительный поиск предпочтительнее, чем чтение 10 МБ дополнительных данных. Где компромисс, примерно?