Низкая производительность Sql Query - PullRequest
0 голосов
/ 03 марта 2011

Я пишу 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 ]

1 голос
/ 03 марта 2011

Вероятно, это два подзапроса, но у нас недостаточно информации о вашей схеме.

Вы должны выполнить свой запрос, хотя EXPLAIN и посмотреть, что он говорит.

JOINs могутпомочь, но опять же, мы не можем сказать наверняка.

0 голосов
/ 11 апреля 2011

Очень сложно точно указать на проблемы с производительностью, если мы не знаем схему вашей базы данных.(Схема базы данных означает ваши определения таблиц, индексы и т.привести к синтаксической ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...