У меня есть таблица tb_xyz
, имеющая field1, field2 в качестве индексированного.
Теперь у меня есть два запроса:
SELECT `id`
FROM `tb_xyz` force index(field1, field2, date_utc)
WHERE `field1`=472
AND `field2`=49066
AND `date_utc` >= DATE(NOW() - interval 1 day)
AND `date_utc` <= DATE(NOW() + interval 1 day)
AND `status` NOT IN (1,4,6)
LIMIT 1
и
SELECT count(*) AS cnt
FROM `tb_xyz` force index(user_id, fleet_id, job_date_utc)
WHERE `field1`=472
AND `field2`=49066
AND `date_utc` >= date(now() - interval 1 day)
AND `date_utc` <= date(now() + interval 1 day)
AND `status` NOT IN (1,4,6)
Предполагается, что оба запросы пишутся, чтобы просто проверить, выполняется ли это условие хотя бы один раз. Какой из них является более оптимальным. Я пытался проверить их время выполнения, но результаты были небольшими для небольших данных.