У нас есть несколько больших таблиц, и мы пытаемся их оптимизировать. (Примечание: в этом примере id, user_id и delete имеют индексы).
Молниеносно:
select *
from sites
where (sites.id = 242 and sites.user_id = 425)
select *
from sites
where (sites.id = 242 or sites.user_id = 425)
Но как только мы добавляем смешанную условную проверку, это просто баки
select *
from sites
where (sites.id = 242 or sites.user_id = 425) and sites.deleted = 1
Мы обнаружили, что этот запрос (хак) работает, но в настоящее время мы используем SQLAlchemy для построения запросов и хотим избежать любых подзапросов
select *
from sites
where (sites.id = 242 or sites.user_id = 425) and site.id in (
select id from sites where sites.deleted = 1
)
Меня смущает, что mysql задыхается от смешанного случая. Но есть ли способ оптимизировать это?