我正在编写一个SQL查询,这使我的性能变慢。因此,它给了我504网关超时问题。请帮我重新制作这个查询,以便我的输出结果更快。我将把查询放在下面。
select
r.c1,
parent_item.c2,
parent_item.c3,
parent_item.c4,
parent_item.c5,
parent_item.c6,
parent_item.c7,
pt.c8,
child_item.c9,
t.c10,
child_item.c11,
from
table1 child_item,
table2 t,
table3 r,
table1 parent_item,
table4 pt
where
r.col1 = child_item.id and
t.id=child_item.typeid and
parent_item.id = r.parent_itemid and
pt.id = parent_item.typeid and parent_item.id=800 and
parent_item.id = (select
itemid
from
table5
where
itemid=parent_item.id
((10!= 1) ? and (holder_itemid in (10,100) and level > 0): "")) and
child_item.id = (select
itemid
from
table5
where
itemid=child_item.id
((10 != 1) ? and (holder_itemid in (10,100) and level > 0) : ""))
order by
r.parent_itemid,
r.relation_typeid,
r.ordinal
答案 0 :(得分:1)
这可能是两个子查询,但我们没有足够的有关您的架构的信息。
您应该通过EXPLAIN运行查询并查看它的内容。
加入可能会有所帮助,但我们再也无法确定。
答案 1 :(得分:0)
如果我们不了解您的数据库架构,则很难准确地指出性能问题。 (数据库模式意味着您的表定义,索引等。)
此外,这一点应该做什么?
((10!= 1) ? and (holder_itemid in (10,100) and level > 0): ""))
AFAICS,这不是有效的SQL查询,会导致语法错误。