SQL заявления с равными против в

Скажем, кто-то подошел к вам и сказал, что мы собираемся сократить объем SQL, который мы пишем, заменив равноIN, Используется как для одиночных скалярных значений, так и для списков чисел.

SELECT * 
  FROM table 
 WHERE id = 1

ИЛИ ЖЕ

SELECT * 
  FROM table 
 WHERE id IN (1)

Эти утверждения эквивалентны тому, что производит оптимизатор?

На первый взгляд это выглядит действительно просто, но приводит к упрощению по двум причинам: 1. большие блоки SQL не нужно дублировать, и 2. мы не злоупотребляем динамическим SQL.

Это надуманный пример, но рассмотрим следующее.

select a.* from tablea a 
join tableb b on a.id = b.id
join tablec c on b.id2 = c.id2
left join tabled d on c.id3 = c.id3
where d.type = 1

... и то же самое снова для более чем одного случая

select a.* from tablea a 
join tableb b on a.id = b.id
join tablec c on b.id2 = c.id2
left join tabled d on c.id3 = c.id3
where d.type in (1,2,3,4)

(это даже не большое утверждение)

возможно, вы могли бы сделать конкатенацию строк, но это нежелательно в свете использования ORM, и конкатенация динамических строк SQL всегда начинается с благими намерениями (по крайней мере, в этих частях).

Ответы на вопрос(2)

Ваш ответ на вопрос