performance - mysql improve view with subquery -


i need compare rows in same column, have following mysql query works giving expected result.

select x.aord,         x.anode parent,         x.bnode child    (select a.ordinal               aord,                 a.id_dt_graph_node_edge aid,                 a.id_dt_graph_node      anode,                 b.ordinal               bord,                 b.id_dt_graph_node_edge bid,                 b.id_dt_graph_node      bnode            dt_graph_node_edge                 join dt_graph_node_edge b                   on a.ordinal < b.ordinal) x         left join (select a.ordinal               aord,                           a.id_dt_graph_node_edge aid,                           a.id_dt_graph_node      anode,                           b.ordinal               bord,                           b.id_dt_graph_node_edge bid,                           b.id_dt_graph_node      bnode                      dt_graph_node_edge                           join dt_graph_node_edge b                             on a.ordinal < b.ordinal) y                on x.aord = y.aord                   , x.bord > y.bord   y.bord null  order  x.aord,            x.bord  

i found it's impossible create view on query due error #1349. can suggest better way make such query, special focus on speed, query slow. thanks.

the reason why cannot create view query because contains subquery on it. view, according on docs, cannot contains subquery in select query. workaround create view first on subquery, example

create view firstsubquery select a.ordinal               aord,         a.id_dt_graph_node_edge aid,         a.id_dt_graph_node      anode,         b.ordinal               bord,         b.id_dt_graph_node_edge bid,         b.id_dt_graph_node      bnode    dt_graph_node_edge         join dt_graph_node_edge b           on a.ordinal < b.ordinal;  create view secondsubquery select  a.ordinal               aord,          a.id_dt_graph_node_edge aid,          a.id_dt_graph_node      anode,          b.ordinal               bord,          b.id_dt_graph_node_edge bid,          b.id_dt_graph_node      bnode    dt_graph_node_edge          join dt_graph_node_edge b          on a.ordinal < b.ordinal; 

and join newly created view on current query,

create view finalview select x.aord,         x.anode parent,         x.bnode child    firstsubquery x         left join secondsubquery y                on x.aord = y.aord , x.bord > y.bord   y.bord null  order  x.aord,  x.bord  

ps: views in mysql horrible


Comments

Popular posts from this blog

android - getbluetoothservice() called with no bluetoothmanagercallback -

sql - ASP.NET SqlDataSource, like on SelectCommand -

ios - Undefined symbols for architecture armv7: "_OBJC_CLASS_$_SSZipArchive" -