Sql查询性能低下

时间:2011-03-03 04:43:22

标签: sqlite

我正在编写一个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

2 个答案:

答案 0 :(得分:1)

这可能是两个子查询,但我们没有足够的有关您的架构的信息。

您应该通过EXPLAIN运行查询并查看它的内容。

加入可能会有所帮助,但我们再也无法确定。

答案 1 :(得分:0)

如果我们不了解您的数据库架构,则很难准确地指出性能问题。 (数据库模式意味着您的表定义,索引等。)

此外,这一点应该做什么?

((10!= 1) ?  and (holder_itemid in (10,100) and level > 0): ""))

AFAICS,这不是有效的SQL查询,会导致语法错误。