Оптимизировать «НЕ В» - PullRequest
       26

Оптимизировать «НЕ В»

0 голосов
/ 25 октября 2018

это мой код PostgreSQL:

      Select 'MOBILE' as source, NULL as vtr, NULL as conversions, 
NULL as w, x,y,z from table_1
        where (x,y,z)
            not in        (select x,y,z from table_2)
        UNION
        select 'DESKTOP' as source, vtr, conversions, w,x,y,z
           from table_1;

Однако это слишком дорого с точки зрения продолжительности.Есть ли «чистое» решение для этого?Я в основном хочу исключить все строки в table_1, которые также встречаются в table_2.Однако в table_2 есть еще 3 столбца (vtr, Conversions и W), поэтому я делаю то, что я делаю в настоящее время.Спасибо, парни!Здесь, на SOF, нашел кое-что, что не подходило для моего случая.

Ответы [ 3 ]

0 голосов
/ 25 октября 2018

вы можете попробовать, используя join

  Select 'MOBILE' as source, NULL as vtr, NULL as conversions, 
NULL as w, x,y,z from table_1 t1 left join table_2 t2
  on t1.x=t2.x and t1.y=t2.y and t1.z=t2.z
where t2.x  is null  and t2.y is null and t2.z is null 
union
select 'DESKTOP' as source, vtr, conversions, w,x,y,z
from table_1
0 голосов
/ 25 октября 2018

Вы можете использовать левое соединение:

Select 'MOBILE' as source, NULL as vtr, NULL as conversions, 
NULL as w, x,y,z from table_1
LEFT JOIN table_2
ON table_1.x = table_2.x and table_1.y = table_2.y and table_1.z = table_2.z
WHERE table_2.x IS NULL and table_2.y IS NULL and table_2.z IS NULL
UNION
select 'DESKTOP' as source, vtr, conversions, w,x,y,z
from table_1;
0 голосов
/ 25 октября 2018

Я бы начал с not exists:

Select 'MOBILE' as source, NULL as vtr, NULL as conversions, NULL as w, x, y, z
from table_1 t1
where not exists (select 1 from table_2 t2 where t2.x = t1.x and t2.y = t1.y and t2.z = t1.z)
union all
select 'DESKTOP' as source, vtr, conversions, w, x, y, z
from table_1;

Для этого вы хотите быть уверены, что у вас есть индекс для table_2(x, y, z).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...