parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

Misha v.3 30.05.2011 13:58

1. почему используются именно LEFT JOIN-ы? "AND itypes.typesid = 1" означает, что как минимум для ibase_itypes и itypes лучше использовать INNER JOIN-ы.

2. для чего вы хотите разбивать запрос? если он вызывает проблемы с производительностью, то это оно (и начинать надо с EXPLAIN), если "чтоб было" или "говорят, что надо разбивать" -- это другое.

3. как часто выполняется этот запрос? если раз в сутки -- забейте на него и займитесь чем-нить более полезным.

4. кроме производительности запроса есть ещё удобство написания кода и рессурсоёмкость кода. предположим, что в itypes.typesname бывают строки по пол килобайта, и запросом достаётся по 1000 записей. получается, что для отображения этим itypes.typesname просто достаётся дополнительно пол мегабайта строк (а у нас работает cgi), хотя самих записей в таблице itypes -- 10. тут удобнее заранее достать в хеш все эти записи, а выводить строки при используя хэш-лукапы. т.е. из запроса join уберётся, но не потому, что он именно там мешается, а потому, что сделать иначе -- удобнее и менее рессурсоёмко.