Ни для кого не секрет, что в Битрикс достаточно сложно построить хитрый запрос на основе связанных инфоблоков - многие вещи приходится делать в PHP уже после выборки данных.
Недавно мы делали систему с большим количеством связанной информации и нам требовалось производить поиск записей (назовем их компании) одновременно по полям их инфоблока и связанного с ним (назовем этот инфоблок адреса). К сожалению, если действовать в лоб - найти все компании, а потом отобрать те из них, у которых адреса подпадают под нужный фильтр - сервер загибался. Самым простым и эффективным оказалось следующее решение:[spoiler]
После анализа запросов выяснилось, что основные поисковые поля находятся в инфоблоке "компании", и еще 3 поля - по одному в каждом из связанных с компаниями инфоблоков. Поэтому было решено хранить в инфоблоке "компании" еще и информацию для поиска - т.е. продублировать в нем поля из связанных инфоблоков, обновляя их по событию. В этом случае запрос по связанным данным [таблицам] перешел в запрос по одной таблице. Выигрыш во времени - колоссальный.
--------------------------------------------------------------
Казалось бы, это относительно стандартная вещь и зачем рассказывать об этом, да еще и на сайте разработчиков под битрикс?
Оказывается, стоит рассказывать и о таких простых вещах. Мне приходится достаточно много общаться со студентами, и не секрет, что значительное число "веб-программистов" - это или еще студенты, или только что закончившие институт. Многим из них в студенчестве вдолбили, что данные должны быть в и им сложно взглянуть на проблему с другой стороны. Большинство плохо представляют себе структуру данных в битрикс, принципы работы СУБД и веб-сервера в целом.
Плюс 1С-Битрикс - в том, что на большинстве проектов хорошо справляются стандартные средства построения запросов и кэширования. Однако, как только речь заходит о больших объемах данных - у многих начинаются проблемы. Часть вопросов снимает модуль производительности, но часть - только опыт и.. коммуникации в коллективе. Но если веб-студия маленькая, у программиста часто не у кого спрашивать. Форумы не всегда дают ответ на нужные вопросы.
Именно поэтому хочется, чтобы профессионалы в веб-разработке делились своим опытом - пусть даже для их уровня задача кажется мелкой и давно "пройденной". Благодаря созданию социальной сети на сайте битрикс такая возможность есть. Давайте больше ей пользоваться и делиться опытом!
Недавно мы делали систему с большим количеством связанной информации и нам требовалось производить поиск записей (назовем их компании) одновременно по полям их инфоблока и связанного с ним (назовем этот инфоблок адреса). К сожалению, если действовать в лоб - найти все компании, а потом отобрать те из них, у которых адреса подпадают под нужный фильтр - сервер загибался. Самым простым и эффективным оказалось следующее решение:[spoiler]
После анализа запросов выяснилось, что основные поисковые поля находятся в инфоблоке "компании", и еще 3 поля - по одному в каждом из связанных с компаниями инфоблоков. Поэтому было решено хранить в инфоблоке "компании" еще и информацию для поиска - т.е. продублировать в нем поля из связанных инфоблоков, обновляя их по событию. В этом случае запрос по связанным данным [таблицам] перешел в запрос по одной таблице. Выигрыш во времени - колоссальный.
--------------------------------------------------------------
Казалось бы, это относительно стандартная вещь и зачем рассказывать об этом, да еще и на сайте разработчиков под битрикс?
Оказывается, стоит рассказывать и о таких простых вещах. Мне приходится достаточно много общаться со студентами, и не секрет, что значительное число "веб-программистов" - это или еще студенты, или только что закончившие институт. Многим из них в студенчестве вдолбили, что данные должны быть в и им сложно взглянуть на проблему с другой стороны. Большинство плохо представляют себе структуру данных в битрикс, принципы работы СУБД и веб-сервера в целом.
Плюс 1С-Битрикс - в том, что на большинстве проектов хорошо справляются стандартные средства построения запросов и кэширования. Однако, как только речь заходит о больших объемах данных - у многих начинаются проблемы. Часть вопросов снимает модуль производительности, но часть - только опыт и.. коммуникации в коллективе. Но если веб-студия маленькая, у программиста часто не у кого спрашивать. Форумы не всегда дают ответ на нужные вопросы.
Именно поэтому хочется, чтобы профессионалы в веб-разработке делились своим опытом - пусть даже для их уровня задача кажется мелкой и давно "пройденной". Благодаря созданию социальной сети на сайте битрикс такая возможность есть. Давайте больше ей пользоваться и делиться опытом!