Оптимизация SQL, не в/не существует?

У меня есть просьба, подскажите пожалуйста, как можно оптимизировать?

    select distinct
    trunc(dw.mdf_date) as mdf_date
    ,dw.dss_id
    ,dw.raid
    ,dw.host_type
    ,dw.volume_name
    ,dw.volume_size
    ,dw.prv
    ,listagg(dw.hba_wwn,',' on overflow truncate '...' without count) within group (order by dw.hba_wwn) as wwn
  from
    dss_wwn dw
  where
    dw.volume_name not in ('ADMIN')
    and dw.volume_name not like '.%'
    and dw.hba_wwn is not null
    and not exists (select 1 from wwn shw where shw.wwn = dw.hba_wwn and shw.dic_type_eqp_id = 4 and rownum = 1)
    and not exists (select 1 from dss_vmhdd shw where shw.wwid = dw.disk_wwn and rownum = 1)
  group by
    trunc(dw.mdf_date)
    ,dw.dss_id
    ,dw.raid
    ,dw.host_type
    ,dw.volume_name
    ,dw.volume_size
    ,dw.prv

Этот запрос работает 23 секунды. И если вы закомментируете эту строку, это работает быстро 0,2 секунды

and not exists (select 1 from wwn shw where shw.wwn = dw.hba_wwn and shw.dic_type_eqp_id = 4 and rownum = 1)

select count(*) from DSS_WWN --100000
select count(*) from WWN t --13000

UPD @Gro Спасибо за ответ, действительно после удаления rownum=1 запрос выполнился за 0,4 секунды

Пробовал заменить на "не в", Но результат отрицательный

qskyhigh 20.03.2019 08:51

Кстати, не нужно делать SELECT DISTINCT, ваша GROUP BY не возвращает дубликатов.

jarlh 20.03.2019 08:52

Создайте индекс для столбцов wwn, dic_type_eqp_id таблицы wwn и попробуйте. Кстати, любая конкретная причина, по которой вы поместили rownum = 1 в оба предиката не существует. Это может вообще не помочь. Механизмы БД отключаются, как только они находят хотя бы одну запись из своей «существующей» части запроса.

Gro 20.03.2019 09:11

@Gro Спасибо за ваш ответ, действительно после того, как я удалил запрос rownum=1, он выполнился за 0,4 секунды.

qskyhigh 20.03.2019 09:30
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
5
64
0

Другие вопросы по теме