Оптимизация подзапроса MySQL с помощью общего подзапроса

0

Из этих таблиц я написал этот подзапрос и его результаты в соответствии с требованиями.

Требуется экспертная помощь для улучшения этого запроса или если мы также можем использовать соединение для этих таблиц.

Запрос:

select ps,st from pac where con in (select 
config from config where logi in 
( select id from logicalnode where physi 
in (select id from ysicalnode where mas =11)));
  • 0
    Пожалуйста, предоставьте образец данных и желаемый результат.
Теги:

5 ответов

0
Лучший ответ

Вы можете попробовать использовать exists:

select payloadstr,starttime from packetdb.packet p
where exists(select 1 from packetdb.configuration c
             where p.configid = id
             and exists(select 1 from packetdb.logicalnode l
                          where c.logicalnodeid = id
                          and exists(select 1 from packetdb.physicalnode
                                     where macaddress = 117769729
                                     and l.physicalnodeid = id)
0
SELECT
    payloadstr
    ,starttime
FROM packetdb.packet
INNER JOIN packetdb.configuration
    ON packetdb.packet.configid = packetdb.configuration.idconfig
INNER JOIN packetdb.logicalnode
    ON packetdb.configuration.idconfig = packetdb.logicalnode.id
INNER JOIN packetdb.physicalnode
    ON packetdb.logicalnode.physicalnodeid = packetdb.physicalnode.id and packetdb.physicalnode.macaddress=117769729
  • 0
    Пожалуйста, добавьте некоторые пояснения к вашему коду. Из обзора .
0

Попробуй это

    select pa,sta 
    from 
   pack p
    INNER JOIN
  confi c
    ON
    p.confi = c.idco
    INNER JOIN
   logice l
    ON
    c.logic = l.id
    INNER JOIN
  physiode pn
    ON
    l.physicalnodeid  = pn.id
    WHERE macaddress =123
0

Вы можете попробовать ниже - используя JOIN

select payloadstr,starttime 
    from packetdb.packet a inner join packetdb.configuration b on a.configid=b.idconfig
    inner join packetdb.logicalnode c on logicalnodeid=c.id
    inner join packetdb.physicalnode d on physicalnodeid=d.id
    where macaddress =117769729
0

Использование Left join

select payloadstr,starttime 
from packet 
left join Configuration on Configuration.IDconfig = packet.configID
left join logicalnode on logicalnode.ID = Configuration.logicalnodeid
left join physicalnode on physicalnode.ID = logicalnode.physicalnodeid
 where macaddress =117769729

Ещё вопросы

Сообщество Overcoder
Наверх
Меню