CMS

индекс
77,39

Как «это» может работать?

Я вот задал сам себе, да и вам вопрос. Может я чего-то не понимаю?

Как может «нормально» работать такой запрос в CMS?

Запрос:


SELECT ID, MESSAGE, MESSAGE_LID, SAVE_STATISTIC, URL_REDIRECT, TEST
FROM b_stop_list
WHERE ACTIVE = 'Y'
AND TEST = 'N'
AND (
SITE_ID = 'ru'
OR SITE_ID IS NULL
OR LENGTH( SITE_ID ) <=0
)
AND (
DATE_START <= NOW( )
OR DATE_START IS NULL
)
AND (
DATE_END >= NOW( )
OR DATE_END IS NULL
)
AND (
(
(
(
MASK_1 &127
) = IP_1
AND (
MASK_2 &0
) = IP_2
AND (
MASK_3 &0
) = IP_3
AND (
MASK_4 &1
) = IP_4
)
OR (
IP_1 IS NULL
AND IP_2 IS NULL
AND IP_3 IS NULL
AND IP_4 IS NULL
)
)
AND (
UPPER( 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 9.51'
 ) LIKE CONCAT
( '%'UPPER( USER_AGENT ) , '%' )
OR LENGTH( USER_AGENT ) <=0
OR USER_AGENT IS NULL
)
AND ( 65 =0
OR USER_AGENT_IS_NULL <> 'Y' )
AND (
UPPER( 'http://bitrix.ru/search/index.php?show_page_exec_time=Y&
show_include_exec_time=Y&
show_sql_stat=Y&bitrix_include_areas=Y&q=%EF%EE%E8%F1%EA&where='
 ) LIKE CONCAT
( '%'UPPER( URL_FROM ) , '%' )
OR LENGTH( URL_FROM ) <=0
)
AND (
UPPER( 'http://bitrix.ru/search/index.php?show_page_exec_time=Y&
show_include_exec_time=Y&show_sql_stat=Y&bitrix_include_areas=Y&q=%EF%EE%E8%F1%EA&where=&PAGEN_1=2'
 ) LIKE CONCAT
( '%'UPPER( URL_TO ) , '%' )
OR LENGTH( URL_TO ) <=0
OR URL_TO IS NULL
)
)


Вот EXPLAIN:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const table…

Как вы думаете откуда взят этот запрос? ;)
Кстати а всего запросов ~80

P.S.
Вот еще один маленький
SELECT ID, NAME, SAVE_STATISTIC, HIT_KEEP_DAYS, CHECK_ACTIVITY
FROM b_stat_searcher
WHERE ACTIVE = 'Y'
AND LENGTH( USER_AGENT ) >0
AND UPPER( 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 9.51' ) LIKE CONCAT
( '%'UPPER( USER_AGENT ) , '%' ) 
ORDER BY LENGTH( USER_AGENT ) DESC , ID

EXPLAIN:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE b_stat_searcher ALL NULL NULL NULL NULL 143 Using where; Using filesort

И так половина запросов. Т.е. «а что такое индексы и зачем они нужны».

UPD:
После критики — бесплатный совет от хабрапользоватлей, компании 1C-Битрикс:
пересмотреть стратегию запросов и индексов.
Здесь архитектуру сильно ломать не надо.
Просто проверить все запросы EXPLAIN-ом и грамотно подобрать индексы — раз.
Два — разделить сложные запросы на мелкие или «union» мелких запросов.
Проверить «рендер» запросов — три.
Честно говоря последняя версия, с точки зрения юзабилити мне уже понравилась. (имхо)
Т.е. в этом направлении идут верным путем. Вот только какими ресурсами все это сделано.

+124
9 ноября 2008, 00:50
19

комментарии (331)

+49
maxic #
Особенно мне понравилось «65=0»
+18
pietrovich #
length(...) <= 0 тоже неплохо…
+10
el777 #
Впрочем upper( 'http://bitrix/search/index.php?show_page_exec_time=Y&show_include_exec_time=Y&show_sql_stat=Y&bitrix_include_areas=Y&q=%EF%EE%E8%F1%EA&where=&PAGEN_1=2' ) LIKE concat( '%', upper( URL_TO ), '%' )
тоже хорошо выносит мозг.
+2
Alex_EXEcuter #
Кстати, я даже знаю зачем так делают. когда поле может быть или пустая строка или нулл начинаются забавные игрища.
Был глюк когда на большой таблице выбирались не все записи. Побыстрому залатал сходным образом.
Потом, конечно, переделал базу. Битриксу, похоже, приходится поддерживать старые базы и возможности легко поменять структуру б.д. нет.
0
bat #
> Кстати, я даже знаю зачем так делают. когда поле может быть или пустая строка или нулл
Эт понятно, но зачем такая извращенная проверка пустой строки?
SITE_ID = '' — просто и понятно, к тому же индексы будут использоваться, при их наличии :)
0
Alex_EXEcuter #
Ан нет, тогда надо проверку делать еще раз на нул.
Кстати, не знаю с чем связано, но даже так у меня были ошибки в выборках.
0
pietrovich #
т.е. length (NULL) возвращает -1 !?
никогда не сталкивался, но всегда думал что должно возвращать NULL…
0
bat #
Я говорил только про замену этой конструкции:
LENGTH( SITE_ID ) <=0
+25
nooze #
ну а вдруг?!
+51
enartemy #
if (65=0)
{
printf("Ребят, тут ваще не реальная фигня какая-то случилась\n");
exit(0);
}


Где-то я это видел вроже
+7
FloppyFormator #
У вас там C? Не скомпилится :)
+5
enartemy #
Ну да, да… if (65==0)
%)
+8
mrShadow #
На самом деле скомпилится :) Но условие всё равно не выполнится.
+2
mrShadow #
Чёрт, всё, пора спать
+5
0leGG #
lvalue вчера отменили? :)
+1
naryl #
65 is not an lvalue
0
nerezus #
Семантику никто не отменил.
0
DZhon #
Такое не скомпилится в JAVA. (Я про само условие в if, а не внутренний блок).
+2
maxic #
Ага, НЛО унесло length, провалилось в антиматерию, когда коллайдер на полную мощность заработает :)
+1
Vamp #
Там наверное было что-то вроде $sql = "...AND ( ".$someindex." =0 OR USER_AGENT_IS_NULL <> 'Y' )...";
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
–18
antonds #
В коде, если интересно, это выглядит так:
and ($user_agent_len=0 or USER_AGENT_IS_NULL<>'Y')
а вы показали уже готовый шаблон.
И не хуй зря наговаривать про 65=0, коль сути не знаете.
+5
maxic #
Да понятно, успокойтесь — это все поняли :) Это шутка. Все знают что это «рендер» делает.
Тот кто разбирается тот понял это и так.

Суть вообще в другом, вы наверно не поняли.

Суть в оптимизации запросов! Что при таких запросах (такого плана) при нагрузке cms будет греметь гайками? и вырабатывать у пользователей чувство, «разобраться» с этим движком.
–10
antonds #
Ответил чуть ниже. А если вы, или кто-либо другой, сможете предоставить оптимизированный модуль статистики — вы озолотитесь. Я без подкола говорю.
Сделайте — с сохранением текущего функционала.
–11
antonds #
Вот почему блин, когда люди видят дерьмовую работу, они говорят что эта работа дерьмовая. И забывают что работы по оптимизации ведутся постоянно, что идут улучшения. Что аналогов по сути то и нет. Но нет же — надо судить с тех позиций что сделано дерьмово и не колышит.
Если вам завидно что за это берут мега-бабки, то опять зря. Берут вполне адекватные деньги за _фреймворк_.
Вот с чем я солидарен, так это с тем, что компания Битрикс задрали рекламной кампанией «сайт за 5 минут». Не сделать нормального сайта за 5 минут. Но инструменты они дают богатые. Тут готов стоять в усмерть.
+8
maxic #
Это не иструменты — это кувалды.

Вы путаете юзабилити и инструментарий.

Юзабилити — согласен в новой версии неплохо реализовано.

Но инструменты похожи на кувалду и зубило
0
maxic #
Завидно тем, кто ничего не делает ;)
Кто работает, некогда завидовать.
И что вы называете fw? Битрикс? :))

Хабровчане, поправьте если я не прав.
Знаю Zend FW, Сodeigniter, Symfony, CakePHP и т.п. ну еще UFO FW
А про Битрикс FW что-то не слышал ;) Или это и есть UFO FW ;)?
–3
antonds #
> Кто работает, некогда завидовать.
Так какого хуя, простите, вы страдаете тут хуйней и отвлекаете от работы?

> И что вы называете fw? Битрикс?
Да. Вы знаете определение фреймворка? Какие принципы фреймворка? Под какие из них не попадает Битрикс?

> А про Битрикс FW что-то не слышал
И значит этого нет? Глупо как-то.
+1
maxic #
:) Давайте без эмоций.
Все достаточно просто.
Я написал критику. Тот кто это понимает — возьмет на заметку и исправит.
И даже наверно спасибо скажет. Согласен, пару моих комментов были и достаточно жестки :) Но иногда только жесткая критика раскрывает глаза на ошибки.

Далее.
Я не отвлекая никого. Кто хочет — читает, кто не хочет — не читает ;)

Извините, Битрикс, не попадет под понятие fw.
Это чистая CMS.
Описанный API — это еще не fw :)
Я даже не понимаю как можно drupal назвать cmf.
FW это скорее универсальный инструмент, «помощь» в работе. Вы можете применить fw Битрикса к своим проектам, сделанным не на Битрикс CMS (извините за тавтологию)? ;)

Да и не имеете права (авторского) ;)

+1
sanchesfree #
CMF он наврено имел ввиду, а то что вы привели в пример, а тот же Zend — это просто F
0
maxic #
Я не минусовал, но хотел бы задать вопрос.
Почему «рендер» запросов «пропустил» в строку запроса «65=0» когда мог спокойно не включать эту часть запроса при «рендеринге». Зачем? Чтобы сделать запрос еще монстроподобным?
Я опять говорю про «стратегию» запросов…
Здесь «пропустил» «65=0», в другом месте еще круче «пропустил». Из за этого запросы тоже становятся монстрами.
Почему такое хорошее отношение к юзабилити и такое «наплевательское» отношение к MySQL запросам?
–1
antonds #
Все просто. Задача стояла простая — захватить определенную нишу рынка. Битрикс ее захватил. Потом начал оттачивать одну за другой свои ошибки — там юзабилити, тут запрос.
Вы спросите почему они сразу не писали хорошо? Потому что тогда бы они просрали рынок. Надо сначала выйти на него, а потом исправляться. Да, может стремный ход, но он работает.

И даже то, что вы (и мы) тут хаем Битрикс — растет его репутация. Вы думаете клиент будет вчитываться в суть, увидя слово Битрикс? Нет, оно отложится в его уме. А когда дело дойдет до того, что ему надо будет сделать сайт, грамотный PR Битрикса просто скажет свою речь. Тут сработает отложенная в голове клиента галочка — «Битрикс». И он подсознательно станет «нашим». Я не про данную тему.
Да даже если и про данный топик. Давайте представим, зашел клиент на данную страницу. И что он видит? Правильно, он видит проблему. А внизу сотни постов. Он будет их читать? Нет! Он подсознательно решит, что там — объяснение проблемы. И пойдет дальше. А «Битрикс» то в голове отложится.
Сумбурно объяснил, но этот метод PR Тоже работает. Доказано Битриксом.

Еще вопросы?

Еще вопросы?
–2
maxic #
Мой топик не коим образом никак не «положит» тень.
Мало того клиентам главное юзабилити (а как я про «него» написал в конце топика? Правда я высказал свое мнение ;).

Согласен с вами, что «маркетинг» таким путем и завоевывается. Ну а теперь когда завоевали, такие как мы можем наоборот помочь исправить ошибки, своей критикой.
Компания Битрикс заслуживает уважение уже за один маркетинг и юзабилити. Я думаю что они исправят эти детские ошибки. И все наши комменты умным людям наоборот помогают.

Ну вот чтобы хотелось бы еще посоветовать компании. Может вы «закончите» с этой архитектурой на этой версии и сделаете действительно новую, соответствующую сегодняшним требованиям. Только не забывайте, что нужно смотреть на шаг вперед.
0
RayZ #
>>Вы думаете клиент будет вчитываться в суть, увидя слово Битрикс?

Допустим это слово будет «чушь». Тут всплывает наш вышупомянутый суперменеджер, говорит кодовое слово «Чушь». И он подсознательно станет «нашим».

:) Понятно, все прекрасно. Непонятны только черезмерные эмоции по поводу критики. Чего ради тогда суетится. По логике вашего комментария данный пост только наруку авторам CMS.
–26
antonds #
А если автор хочет понять суть, то она такая:
Битрикс — это фреймворк и мощная система, позволяющая путем наименьших затрат вывести _бизнес_-сайт на рабочий уровень. Потом дальнейшей развитие заключается в заточке под свои нужды.
Есть ли разница? То ли вы будете писать полгода нужную вам систему, вылизывая каждый запрос и потеряете время, то ли вы запуститесь за две недели и год параллельно будете дорабатывать?

Что насчет конкретно модуля статистики. Да, грешит он. Но и не так все плохо как казалось бы. Модуль очень мощный. И постоянно идут улучшения.

Справедливости ради замечу, что скомунизженный отрывок запроса взят вами чуть ли не из 4ки. В 7-ой, последней версии, все по другому.
–33
antonds #
Да, криворукие программисты, у которых руки растут из задницы и воют что они слезли с Битрикса и их тянет блевать — такие программисты могут идти на хуй.
+8
maxic #
За деньги?
Путем наименьших затрат можно сделать на например Drupal-е, бесплатно.
Кстати на Druapl сайты делают и большие компании — Adobe, IBM…

Зачем брать деньги за CMS, пусть берут за поддержку.
Вы не поняли.
Я не только про модуль статистики! Посмотрите внизу я еще пару запросов привел.

Это «стратегия» запросов — делать их без нормальных индексов и монстроподобными.
Я не стал приводить из 7-й версии, так по понятным причинам приобретать не буду.
Поэтому ради корректности привел из предпоследней. Так ак могу проверить в ней на explain.

А на монстр-запросы вы можите сами зайти посмотреть demo.bitrix.ru
Поверьте очень много их осталось, ведь новая версия немного только модифицированная.
Никто в здравом уме не будет в коммерческих CMS круто менять запросы и переписывать с нуля рендер.
–26
antonds #
«Кстати на Druapl сайты делают и большие компании — Adobe, IBM…»
Не буду спорить. Только знаете в чем отличие бесплатного от платного? А то что серьезные клиенты не будут брать бесплатное — потому что оно, как известно, не бывает хорошим. Я не про акул рынка — там все на откатах построено, не будьте наивным ребенком. Я про среднестатистических клиентов, которым не дают откаты за то, что их сайт на Друпале или на Битриксе — им просто зазорно будет иметь сайт на бесплатном движке, тогда как у конкурента сайт вертится на крутой CMS. Менталитет такой, понимаете ли.
И на Битриксе крутится много акул отечественного рынка. Кто-то из-за отката согласился. Кто-то из-за мною описанной причины.
Да и вообще. От того что мы здесь с вами спорим о корявости движка, продажи не упадут. Более того, я как продавал сайты на Битрикс (да, да, а вы не догадались еще?), я так и буду их продавать. Это средство с помощью которого я делаю большие деньги. И отказывать в пользу бесплатных движков я не намерен. Живем мы раз, а благотворительностью я буду заниматься с первого миллиарда.
+8
saratovdae #
«А то что серьезные клиенты не будут брать бесплатное»
— позиция контор которые сидят на голимом микрософте.
не интересно.
–18
antonds #
Я презираю микрософт и их политику. Это тоже, справедливости ради.
Я вам говорю ФАКТЫ. Я 4 года в этой мафии.
+2
poorum #
Да не было никаких фактов. А МС… хорошая компания, и с годами становится все лучше. Жду возможности посмотреть Битрикс на .net.
+1
t0H #
такая возможность уже есть :) у них на сайте можно уже купить ну или на крайняк скачать демку :)
+5
izen #
Сударь вы идиот.
–1
antonds #
Запятую пропустили.
+1
izen #
Это я к antonds :)
–2
antonds #
Я понял.
+2
irishrover #
.net, Asp.Net, DynamicData, EntityFramework, Visual Studio Express, SQL Server Express — это всё бесплатные продукты и технологии от MS, на которых крутятся сотни тысяч сайтов, включая сайты крупных компаний.
+1
saratovdae #
при всем уважении, но «бесплатный» asp.net тянет за собой отнюдь не бесплатный IIS из MS Win Server в качестве хостинга.
0
irishrover #
А в случае с Битриксом пришлось бы платить за саму ЦМС. Так что разницы особой нет ))
+13
schors #
> А то что серьезные клиенты не будут брать бесплатное — потому что оно, как известно, не бывает хорошим.

Угу, например Bitrix написанный на бесплатном PHP и в основном устанавливаемый на бесплатный апач и бесплатный Linux/FreeBSD. Просто праздник мнений какой-то :)
–17
antonds #
Клиентам про бесплатность PHP, апач и прочих не говорится. Клиенту говорится, что Друпал — бесплатное Г. Хоть заминусуйтесь, — клиенты покупаются.

Так как ущербные мудаки загнали карму в минус, отвечу и на еще одну вашу реплику:
«Будет хорошо продаваться Друпал — продаём друпал. Будет Битрикс — продаём Битрикс. „
Сейчас хорошо продается Битрикс — ну так и в чем проблема?
+7
schors #
Ну так это просто потому что никто не говорит «Битрикс — платное Г.» Хотя, вот говорят. Не уверен что лучше работает. Моя статистика показывает что сайты с Битриксом гоняют по хостингам как колбасу по авоське.

> Так как ущербные мудаки загнали карму в минус,

Ну так Вы побольше пообзывайтесь ;)

> Сейчас хорошо продается Битрикс

Вы пробовали продавать Друпал? Вы ведь там чуть выше сказали что он продаваться не будет. Факты в студию. Умозрительно — будет и ещё как. Тем более сейчас, когда к весне половина из нас подмётки от сапог кушать раз в неделю будет.
–8
antonds #
Бюджеты сайта на Битрикс друпаловцам и не снились. Вот я про что. Опять не поняли?

«Вы пробовали продавать Друпал?»
А смысл? Но как минимум я не создаю топики что друпал — Г. Продавайте на здоровье.

«Тем более сейчас, когда к весне половина из нас подмётки от сапог кушать раз в неделю будет.»
Половина кого? Тех, кто продает Друпал? Возможно.
0
schors #
> Бюджеты сайта на Битрикс друпаловцам и не снились. Вот я про что. Опять не поняли?

Нет, не понял. Что такое «бюджеты»? И какая ебидта от освоения этого бюджета? Бюджет может быть хоть миллиард зелёных, но если он просрался в минуса, то бюджет в 10 рублей с ебидтой в 1 рубль — уже бесконечно лучше.
–6
antonds #
> Что такое «бюджеты»?
Это когда сайт на друпале стоит 50 т.р., а на битриксе несколько миллионов.

> но если он просрался в минуса
Стоп. С какой стати вы заявляете что проект на друпале не просрется в минуса, а на битриксе просрется?

PS: Я знаю что такое «ебидта». Знаком с финансами. Только все-таки очень редкоупотребимое слово. Гораздо проще сказать — «грязная прибыль». Зачем выеживаться? Или вы показываете всем степень MBA?
+4
schors #
> Это когда сайт на друпале стоит 50 т.р., а на битриксе несколько миллионов

А можно список сайтов за несколько миллионов в студию. Любых, можно без Битрикса. Я уже запасся попкорном ;)

> С какой стати вы заявляете что проект на друпале не просрется в минуса, а на битриксе просрется?

Ни в коем случае. Тоже может просраться. Но умозрительно — битрикс оттяпывает часть дохода и сложен во внедрении, а друпал нет и проще в пожддержке. Разница уже озутима на уровне больше заработных плат.

> Зачем выеживаться? Или вы показываете всем степень MBA?

Потому что термин «ебидта» определён, а «грязная прибыль» — нет. Применение определённого термина исключает войну недопонимания умолчаний.
–8
antonds #
> А можно список сайтов за несколько миллионов в студию. Любых, можно без Битрикса. Я уже запасся попкорном
Да хотя бы Эльдорадо. Жуйте. Я про попкорн.

> Но умозрительно — битрикс оттяпывает часть дохода и сложен во внедрении, а друпал нет и проще в пожддержке. Разница уже озутима на уровне больше заработных плат.
А знаете почему? Потому что специалистов мало. И что самое поразительное — все хаят Битрикс, но пытаются пролезть в эту нишу, так как платят тут много. А говносайты рождаются потому что уровень специалистов маленький.

>Потому что термин «ебидта» определён, а «грязная прибыль» — нет. Применение определённого термина исключает войну недопонимания умолчаний.
Вы лучше бы за орфографией следили.
+2
schors #
> Да хотя бы Эльдорадо

Да, хорошо, спасибо :) Надо будет их в пример взять ;) «как выбросить миллион»

> И что самое поразительное — все хаят Битрикс, но пытаются пролезть в эту нишу, так как платят тут много

Спорное какое-то утверждение. Мало того что не вижу такого тренда и Вы никак его не подтверждаете, так ещё и применение ложной предпосылки «платят много». Никто не работает за деньги, это самообман.

> Вы лучше бы за орфографией следили.

Кому лучше?
–7
antonds #
> Мало того что не вижу такого тренда
А он есть. «Принцип суслика» называется

>Вы никак его не подтверждаете,
К сожалению не имею возможности показать статистику.

>Никто не работает за деньги, это самообман.
Идеала нет. Потому и кризис из-за самообмана наступил среди таких вот.
+1
schors #
> А он есть. «Принцип суслика» называется

Не верю © Станиславский

–12
antonds #
Вы подтверждаете принцип суслика.
— видишь суслика?
— нет
— а он есть
0
schors #
По-моему, Вы замкнулись на суслике :)
0
antonds #
Нет, я просто прекратил беседу. Спасибо за участие.
0
schors #
Вы, кстати, специально это сказали чтобы я оценил Вашу рекламу Друпалу? :) Оценил, спасибо ;) Вам вернуть карму или ещё опустить? :) Мне просто надо знать как Вам угодить, чтобы Вы поговнялись в топике про Друпал когда я его создам. Нам нужны активные флемеры :)
+1
antonds #
Вы чего добиваетесь? Хотите уколоть? Не стоит, я верну. Хотите показаться умным? Я уже в курсе про степень MBA. А может вы хотите узнать какое максимальное отклонение треда возможно на Хабре?

Второй за этот топик мужчина старше меня попадается, а ведет себя как дите. Совпадение? Или ссылки с крутых форумов?

Рекламы не увидел, да и бог с ним, с Друпалом, мне он что был, что есть.

> Мне просто надо знать как Вам угодить, чтобы Вы поговнялись в топике про Друпал когда я его создам.

В таком случае должно произойти только одно — мне на глаза должен попасться текст, который я захочу оспорить. Если вы проведете анализ моих тредов здесь, то увидите, что споры я не начинал, все само как-то образовалось. А первый мой комент был про то, что автор топика, в своем первом коменте, наехал на Битрикс за глупость 65=0. Я считаю что если хаять, то хаять по честному.

Вам что-то еще непонятно?

PS: А если быть до конца честным, то не рад что вообще ввязался в этот быдло-спор (я не про вас). Съело 3 часа моего времени в сумме.
–1
schors #
> Вы чего добиваетесь? Хотите уколоть?

Именно :)

> Я уже в курсе про степень MBA.

Ещё в прошлый раз хотел спросить — а что это?.. У меня вообще ни одного официального образовательного титула. От всех бумажек — вон только аттестат за 9-ый класс в столе валяется. Есть ещё за 11-ый — но он пылиться где-то в районе городского архива…

> Второй за этот топик мужчина старше меня попадается, а ведет себя как дите

Это замечательно :) Вы путаете старение со взрослением. Я даже больше скажу — я приду в ужас когда мне скажут что я веду себя как старый пердун :)

> А если быть до конца честным, то не рад что вообще ввязался в этот быдло-спор

Головня головне
передать готова
пламя от пламени;
в речах человек
познает человека,
в безмолвье глупеет.
Речи Высокого, 57
0
antonds #
> Именно :)
Так колите, а не хуйней страдайте.

> Ещё в прошлый раз хотел спросить — а что это?..
Загляните в словарь.

> я приду в ужас когда мне скажут что я веду себя как старый пердун
А вы не путайте детскую ноту, которая должна быть в каждом, с детским дебилизмом.

> Речи Высокого, 57
А, теперь понял, вам ляса поточить не с кем просто. Тогда пишите, отвечу.
0
schors #
> Так колите, а не хуйней страдайте.

Вполне удачно получается ;)

> Загляните в словарь.

Эка Вы меня… я вообще скромный сисадмин…

> А, теперь понял, вам ляса поточить не с кем просто. Тогда пишите, отвечу.

Да есть с кем — я просто всегда открыт для нового общения :)
0
antonds #
> Вполне удачно получается
Хуйней страдать? Это я вижу. Подколов пока не заметил. Мелко плаваете, сударь.

Еще что-нибудь по делу?
0
maxic #
Продается!
Вы «отстали» от жизни ;)
И покупается серьезными компаниями.
Продается самим разработчиком Дрисом Байтаертом — называется, кажись Acquia Drupal.
+2
Ai_boy #
>> «90% хабры — ущербные мудаки. Ты один из них?
Хинт для дебилов — если ты зашел сюда чтобы нажать минус, то ты ущербный мудак»

Детский сад. Еще бы написали «Я маме пожалуюсь....»
0
antonds #
Детский сад в соседней ветке.
+2
Ai_boy #
Вы поймите что в споре 2-ух людей не бывает 1-го дурака… Их всегда 2-ва :)
+1
Ai_boy #
Вы же взрослый человек. Вот ненравится кому-то «морковка». Он считает её отвратительной и вредной для здоровья. Вы так-же усердно будите с ним спорить и доказывать что «морковка» полезна? о_О
–1
antonds #
Нет, тема морковок мне не интересна. Как собственно и данный тред (наш с вами).
0
bat #
c
0
ostapbender #
— спасет, интересно, верстку…
0
korynd #
Что за чёрт?
0
VerstalschikCom #
попробую закрыть курсив
0
serkys #
Видимо, не спасло
0
maxic #
To antonds: Вы думаете на os проектах нельзя зарабатывать деньги.
Заблуждаетесь. И очень сильно.

Да вас конечно сильно заминусовали. Просто вы довольно часто «ругаетесь», здесь такого не любят. имхо ругайтесь, я например не против, только не переходите на личности :)

Кстати Drupal продается — и очень хорошо. Я вас удивил? Да, да — продается. Даже есть компания — называется Acquia Drupal. Основатель Дрис Байтаерт — «изобретатель» Drupal.
+1
schors #
> Более того, я как продавал сайты на Битрикс (да, да, а вы не догадались еще?), я так и буду их продавать. Это средство с помощью которого я делаю большие деньги. И отказывать в пользу бесплатных движков я не намерен.

Это говорит только о том, что Вы замкнулись на Битриксе. Продавать надо то что хорошо продаётся и показывает хорошую ебидту, а не стоит много. Будет хорошо продаваться Друпал — продаём друпал. Будет Битрикс — продаём Битрикс. А вот ебидта зависит в том числе и от стоимости поддержки.
0
nekt #
Будет выгодно продавать китайцев, что будут работать вместо систем управления — будем продавать китайцев.
Все верно. Продовать выгодно то, что пользуется спросом. Спросом пользуется то, что выгодно, удобно и разрекламирвоано. Битрикс в этом случае — разрекламирован. Друпал — выгоден. Китайцы же тупо удобны :)

ЗЫ ты пронюхал что тут про битрикс пишут — вот и прибежал? ;)
0
schors #
Да тут в одном закрытом форуме (ХО) идёт похожий тред :) Чуть поцивильнее и чуть менее техничный. Кто-то ссылку сюда дал.
+5
poorum #
Вот интересно, а спор-то у вас не о чем. По своему опыту. Какая CMS лежит в основе сайта директорам именно крупных компаний глубоко плевать. Им нужна стабильность сайта и выполнение всех функций, заложенных в ТЗ. Имиджевая составляющая — дизайн и лейбл разработчика. Все! Как там устроен сайт, Битрикс там или друпал… да все равно. Гигантский плюс Битрикса — интеграция с 1С (и поддержка 1С). Что такое 1С у нас знаю, этого достаточно. Разработчики сайтов, использующие бесплатные движки во многом более профессиональны, нежели разработчики Битриксовые, ибо решают проблемы реального программирования, а не багов платного движка и проблемы с техподдержкой (а техподдержка именно у Битрикса отвратительная).

Да, а миллиард вы на сайтах не заработаете, пока не поздно, идите в другую область — рано или поздно директора поймут, что типовой сайт не стоит тех денег, что за него просят. Зайдите на биржи зарубежного фриланса, введите в поиске «php», узнаете о чем я говорю — там уже поняли, что большие деньги надо платить за проекты, которые не на платных, не на бесплатных движках реализовать вообще не возможно. А у нас все сайты-визитки штампуют на Битриксах…
–3
antonds #
«а техподдержка именно у Битрикса отвратительная»
Опять голословие. Техподдержка Битрикса работает на высоте. Для коммерческих клиентов конечно. Ну и конечно, если у вас вопрос в саппорт не вида «а как установить Битрикс» или «а как настроить документооборот». Потому что надо:
а. четко и ясно выражать свои мысли
б. читать все-таки документации
+3
Dreadatour #
Но и на сложные вопросы они ответить не в состоянии.

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

Ну и по пунктам:
а. Смешно. Если я говорю на техническом языке вещи, которых техподдержка не понимает (!), зато понимают другие разработчики, то как мне ещё можно выражать свои мысли такой техподдержке? На пальцах показывать?
б. Документация — тоже крайне больной вопрос. По крайней мере в пятёрке был таковым.

P.S. говорю на собственном опыте.
P.P.S. Битрикс давно уже забросил (Django рулит =)))

Извините, не сдержался. Плохо, конечно, ворошить прошлое =)
0
mikkie #
>Но и на сложные вопросы они ответить не в состоянии.
А что такое сложные вопросы? «Реализуйте мне логику»?, «Настройте мне сервер»?

>Ибо сидят там не разработчики, а люди, которые мало что смыслят в системе.
Это вы зря, сидят там довольно грамотные специалисты, но настраивать скажем сервер для оптимальной работы за _ВАС_ никто не будет. Вы же не просите производителя автошин красить Вам авто.

>Смешно. Если я говорю на техническом языке вещи, которых техподдержка не понимает (!)
Это Вы при динозаврах еще жили?
ЗЫ. Пример в студию!

Я не говорю, что техподдержка там самая лучшая или худшая, но сидят там ребята которые решают задачи связанные с их продуктом и даже немного больше. В принцип в любой уважаемой конторе так.
0
Dreadatour #
Ну я же говорю: шаблонные ответы на стандартные вопросы :D

Вы что, не встречали никогда проблем, отличных от «Реализуйте мне логику», «Настройте мне сервер», «настраивать скажем сервер для оптимальной работы»? ;)

По вашему сообщению и эмоциям сразу чувствуется уровень основной массы вопросов в техподдержку :D Собственно, «за что боролись, на то и напоролись» — нечего было позиционировать продукт как «создай сайт за пять минут» :D

Поймите же вы, в любой техподдержке сидят люди, которые неспособны программировать. Иначе бы они работали программистами и получали бы больше денег и тратили бы меньше нервов, не общаясь с клиентами. Следовательно в системе они разбираются на том уровне, до которого из «докачали» — обычно, до уровня шаблонных ответов. Это не плохо и не хорошо. Так есть везде.

Если бы продукт позиционировался как сложная система для профессионалов, тех обращений в техподдержку, которые вас так задевают было бы гораздо меньше. Но и продажи были бы существенно меньше. Вывод: всё взаимосвязано ;)

P.S. Примеры приводить не буду, — извините, неохота копаться в «грязном белье» (aka «Bitrix» =)
0
Dreadatour #
И предлагаю закончить этот бессмысленный разговор.
0
Caspian #
Ну так и зачем копаться в «грязном белье»? какого вы этим занимаетесь?
Ура!!! все увидили что в продукте Битрикса есть тупое сравнение 65!=0!!.. Деразайте, вы напишете систему лучше чем Битрикс, и заработаете больше денег!!! Вы положите Битрикс на лопатки свом стойным и логичным кодом, разве вы об этом никогда не мечтали???
Только помните, что написать код это не основное. Самое важное его продать потом. Ваш идеальный код потом может никто не купить, а кривой код Битрикса будут брать на расхват. Глотайте сопли, Господа.
0
ainu #
Мне, как разработчику, кстати, важно чтобы клиент купил то, что ему дают, денег заплатил.
Если он при это будет платить пару десятков тысяч за Битрикс, (и иногда за VIP-хостинг) то пожалуйста.
Да пусть берут нарасхват код Битрикса, не я же его продаю.
0
maxic #
Им нужна поддержка, в первую очередь.
Но самое интересное — каждая хорошая os cms имеет платную поддержку.

1С: Битрикс — то что это «богатая» компания — уже поддержка. У нас менталитет такой — компания с историей и есть хорошая поддержка. У нас главное успех компании и ее история. А если еще хороший маркетинг и PR, то успех гарантирован.

Другое дело что с менеджментом проблемы, точнее сохранении «политики и „стратегии“ cms.
А за ней как раз и должны следить менеджеры среднего звена. Это о стратегии глобальной должны думать руководители высшего звена.
0
kiroru #
пипец, у человека бред начался??)))
–1
antonds #
Нечего умнее в голову не пришло, а сказать очень захотелось?
0
maxic #
Давайте ругаться. :)
Только.
Я прошу, не переходите на личности.
Давайте друг друга уважать :)
Извините что взял наглость влезть как «модератор», но я всё же автор топика.
Мне не хотелось бы личностных обид после моего топика. :)
–8
antonds #
Ентож блять каким долбоебом надо быть, чтобы раскрыть комментарий (который и так закрыт, значит там ничего хорошего), прочитать его и еще и блять минус влепить. А потом после всех этих манипуляций пропиздовать ко мне в профиль и жмакнуть в минус.
Я хуею, народ. Вы уже совсем деградировали. Мне жалко новое поколение — таких мудоблядских отцов, которые уперлись в монитор и клацают ± цивилизация не видела уже давно.
0
TimTim #
Чувак… бедная твой карма…
0
antonds #
«Взмахнул» на 761 позиций за только этот топик. 55-я позиция хитпарада ( habrahabr.ru/people/unhabred/ ). Хочу в первую 20-ку. Спасибо всем!
0
mikkie #
это неизлечимо.
называется эффект «Стада».
0
schors #
Скажите откуда взяли примерно, я посмотрю что у них в 7-ке в RC.
0
t0H #
в семёрке тоже самое :)
абсолютно идентично… пример это модуль статистики…
0
Umkus #
Вероятно запрос просто сгенерирован. Не индусы вроде :)
0
Umkus #
Отмена. Уже высказались выше :)
+27
balvardo #
Я позволю себе предположить что это Битрикс?
+18
maxic #
В точку…
Извините, но это же коммерческая система. И за «это» еще берут деньги.
Или я вообще перестал что либо понимать, но я не могу понять как справляются с нагрузкой сервера, на которых стоит Битрикс? Половина запросов просто без индексов работают.
Да и количество под 100-ню подходит.

Могу конечно отдать им должное — сделано красиво, уже и юзабилити подняли на более высокий уровень.
Но архитектура — извините. А за такие запросы — надо просто по рукам бить. Я понимаю что их «рендерит» скрипт. Но так плевать на индексы. Это уже «стратегия».

Или я не прав. Я действительно, хочу понять.
0
el777 #
> Половина запросов просто без индексов работают.
> Да и количество под 100-ню подходит.
Зато вот недавно объявили 3-х кратном увеличении скорости!
Наверное для каких-то запросов индексы включили :)
+2
korotkoff #
какие-то запросы просто удалили
+1
maxic #
Да нет :) скорее объединили из 3-х в 1 :)

Вот и увеличение скорости в 3 раза.
+3
defeed #
всё это делается в маркетинговых целях, вероятно. чтобы потом «исправить» свои косяки и сказать «мы увеличили скорость в n раз, а да мы, а да молодцы!»
+1
SovGVD #
стандартные метод — сделать правитльно, потом сделать кучу ошибок, потом продать, потом продать обновление №1… потом продать обновление №n и так далее, до новой версии с теми же проблемами, поэтому открытый код лучше =) там хоть стыдно такое делать
+1
poorum #
Ну, тут код тоже открытый и не стыдно, как видите =)
+9
mihalich #
Информация из первых рук — сервера не справляются. Действительно, много без индексов.
Пишем свой специализированный движок.

Битрикс — табу, кошмарный сон, тихий ужас. Ждем не дождемся, когда с него слезем.
+1
irishrover #
Вы ещё не видели QPublishing. Вот то ужас, а Битрикс по сравнению с ним — это Божественно Документированная Абсолютно Безглючная Система Управления Контентом, Да Продлит Аллах Её Дни ;-)
0
t0H #
да… вот уж что, что а документация у них на высочайшем уровне…
мало кто такой может похвастаться…
+ возможность онлайн обучения будущих контент-менеджеров у них на сайте…
0
irishrover #
У QPublishing документация на высшем уровне? Вы издеваетесь? Пяток файлов в ворде и полнейшее отсутствие API — это высший уровень?

Может вы не про www.qp7.ru/live/, а про что-то другое говорите?
0
t0H #
я про Битрикс говорил :)
0
irishrover #
Надеюсь, что вы про Битрикс ;-)
0
t0H #
именно про него :)
0
thornc #
Прошу прощения, вы про докуентацию Битрикса? Скажу честно, у меня от нее осталось другое ощущение. Во всяком случае после MSDN.
Лично у меня ощущение от нее стало портиться после попыток разобраться с модулем поиска например(расскажите мне про язык запросов Битрикса ;) нет, все просто… но в документации этого нет )
Еще очень радуют недокументированные параметры у функций в API инфоблоков. Песня просто какая то! Правда! А еще…

class CSearchQuery extends CAllSearchQuery
{
//…
function BuildWhereClause($word)
{
//…
$this->cnt++;
if($this->cnt>10)
return «1=1»;
}
}

это исходники семерки) Поясню. Функция участвует в построении поискового выражения. И указанный участок кода ограничивает количество… термов… десятью!
Мы писали под новостной ресурс несложный рсс-агрегатор (ну… что то вроде ретранслятора, читает фиды… фильтрует, выводит подходящие)

КОнтент менеджер ввел запрос. Все вроде правильно, но блин, находит совсем не то что нужно.
((ЦБ)||(Центральный&&банк)||(Центробанк))||((Московская&&межбанковская&&валютная&&биржа)||ММВБ)||(((фондовый&&рынок)||(экономическая&&ситуация||финансовый&&кризис||антикризисные&&меры))&&(РФ||Россия||Российская&&Федерация))||((федеральная&&служба)&&(налоговая||антимонопольная))||ФАС

0
thornc #
Черт! Нечаянно отправил.

Так вот этот запрос после обработки… Превратился в

+1
thornc #
Да что происходит!

((( (sum(st.stem = 'ЦБ')>0) ) OR ( (sum(st.stem = 'ЦЕНТРАЛЬН')>0) AND (sum(st.stem = 'БАНК')>0) ) OR ( (sum(st.stem = 'ЦЕНТРОБАНК')>0) )) OR (( (sum(st.stem = 'МОСКОВСК')>0) AND (sum(st.stem = 'МЕЖБАНКОВСК')>0) AND (sum(st.stem = 'ВАЛЮТН')>0) AND (sum(st.stem = 'БИРЖ')>0) ) OR (sum(st.stem = 'ММВБ')>0) ) OR ((( (sum(st.stem = 'ФОНДASDОВ')>0) AND 1=1 ) OR (( 1=1 AND 1=1 ) OR ( 1=1 AND 1=1 ) OR ( 1=1 AND 1=1 ))) AND ( 1=1 OR 1=1 OR ( 1=1 AND 1=1 ))) OR (( 1=1 AND 1=1 ) AND ( 1=1 OR 1=1 )) OR 1=1 )

Я конечно не знаю, но подобное поведение не описано нигде!
Я все понимаю, оптимизация, быстродействие, все что угодно… но какого черта 10=const? И где хоть слово об этом?
–1
t0H #
Извиняюсь, но Вы сравнили «хрен с пальцем», что такое MSDN и что такое какой то Битрикс…
тут на лицо разные вложения капиталов и в Битриксе, на ряду с другими CMS по крайней мере документация вся в одном месте + есть курсы, а у Друпала например? у Джумлы?
Дайте мне пожалуйста ссылочку на Хелп одним файлом, а не разрозненную кучу статей…
А то что код у битрикса порой местами шальной… так, если Вы не заметили, весь топик этому посвящён, и я, говоря, про документацию совсем не говорил, что код у них хороший…
И что в хелпе многое не описано, это тоже верно…
Но он хотя бы в одном месте, не нужно шариться по всему нету, в поисках, человека, который решил проблему и поделился этим с общественностью…
0
thornc #
Ок) С Вами сложно поспорить.
–1
thornc #
Да, не спорю :) И, на самом деле, вопросы к документации начинают появляться лишь на более-менее сложных, хотя… нет. не сложных, а нестандартных задачах :) А так… аппетит приходит во время еды, поэтому «накушавшись» чего-нибудь вроде MSDN начинаешь предъявлять схожие требования ко всем продуктам, с которыми впоследствии имеешь дело. С друпалом я, к сожалению, дела не имел.

P.S. Я что то так удачно нажимаю, что написанный лишь наполовину комментарий зачем то отправляется, прошу прощения
0
t0H #
:)
Я полностью согласен, что MSDN это шикарнейший хелп, на многие случаи жизни…
Сам им часто пользуюсь…
А в случае с Битриксом, многое приходится придумывать самому или ставить костыли ихнему API...(что не есть гуд и вообще порой порождает дикие головные боли), но это лучше чем ничего…
имхо :)
+1
thornc #
+1
У меня последнее время зреет мысль написать небольшую обертку над API к инфоблокам хотя бы) Меня очень угнетают все эти тяжеловесные вызовы, псевдо ООП, лишние параметры и некая… неочевидность).
Изящный fluent interface (а-ля LinQ, jQuery), очевидность, минимальное количество кода для простых и банальных операций, гибкость и мощь, позволяющие реализовывать все задачи реализуемые через «чистый» iblock API ))
Просто… по роду деятельности приходится время от времени плотненько работать с битриксом… А душа ко всем этим CIBlockElement::GetList не лежит ну никак)
0
egorinsk #
Блин, какой индекс может быть на UPPER('Mozilla Firefox...') LIKE ('%URL%')? Да если на первый запрос и сделать индекс, он будет весить больше, а работать медленнее самой таблицы!

Тут надо структуру БД и принцип работы менять.
+1
maxic #
Они просто уже запутались, представьте ~200 таблиц.
А запросы «лобают» уже первые попавшиеся «лабухи», которые понятия не имеют про % впереди искомого слова и как он влияет на индексы, да и вообще понятия не имеют про оптимизацию.
0
egorinsk #
Мммм… из способов борьбы с такими запросами вспоминается только слово «Газенваген», к чему бы это?
+3
tkf #
— Какие у вас прикольные обои.
— Это не обои это схема базы данных.
+1
amorphis #
Вы предположили вот по этой строчке?

upper( 'http://bitrix/search/index.php?show_page_exec_time=Y&show_include_exec_time=Y&show_sql_stat=Y&bitrix_include_areas=Y&q=%EF%EE%E8%F1%EA&where=&PAGEN_1=2' )
+2
balvardo #
Честно говоря внимания не обратил, просто приходилось как то раз ковыряться в этом чуде отечественного производста. Буэ! =)
+2
amorphis #
Да уж, знакома ситуация, недавно разбирал их модуль веб-аналитики. И ужасался как всё работает :-)
+7
el777 #
Я два года назад в этом ковырялся, после чего желание разрабатывать на нем совершенно пропало.
Причем мне даже техподдержка не помогла, пришлось залезать «с отверткой» в потроха и разбираться. Починил, все работает. Но понял, что надо завязывать с тяжелыми наркотиками с битриксом.
+1
elfiki #
Тяжелые наркотики хотя бы удовольствие доставляют некоторое время :)
0
dmitriyecho #
у меня тоже эта мысль первой в голову пришла ))
+11
maxic #
Обьясните, как за такое требуют денег?
Я смотрю, запросы из 1C: Бухгалтерии «перекочевали» в Bitrix CMS ;)
Ну ладно простительно для бухгалтерии, путь бухгалтеры — расслабятся, чаю по пьют, пока отчет составляется.
Но web !? Он же скорость любит.
+8
el777 #
Никого не волнует как это работает, главное — как продается. :(
Эта стратегия захвата уже отработана микрософтом.
+2
maxic #
«Хороший» маркетинг — губит хорошие идеи :\
+10
Anton_Ivanov #
Developers, Developers, Developers, Developers, Developers!
+6
korynd #
Only $99!!!
0
elfiki #
Простая интеграция с 1С: Бухгалтерия и прочее — за это и платят.
Ах, да. Еще много менеджеров слышали, что 1С — это хорошо, а 1С: Битрикс — это очень хорошо, и просто требуют при заказе сайта, чтобы было сделано именно на этой системе, аргументируя ко всему прочему еще и тем, что «вы-то может через год исчезнете, а Битрикс вечен и кто-нибудь сможет что-нибудь исправить на сайте»
+2
walker #
а у нас на хостинге потом клиенты возмущаются: " ну это же битрикс, как он может тормозить??"

и вот приведешь такому клиенту подобный запрос ( а бывали и по-больше — на пару экранов :) ) и тогда он уже понимает.
+12
balvardo #
Ой, повезло то вам как с клиентами, раз они понимают…
+7
nooze #
Да уж, обычно «что вы мне тут показываете?! Я вам что „программист“ какой-нибудь?! Вы мне нормально все сделайте, а не фигню какую-то подсовывайте! Мы за этот битрикс кучу денег отвалили, а вы его настроить даже не можете?»
+2
walker #
экзакли!

обычно так и говорят сначала.
но против фактов и логов мускуля не попрешь. ))
т.е. запрос на 2 экрана визуально попахивает чем-то нехорошим.
доказать не так уж сложно.
+1
nooze #
Ну это если люди слушать хотят, а так, всяко бывает. Делайте чтобы хорошо, и точка.
+1
chanaev #
Попробуйте им привести аналогию «техсервис-завод изготовитель». Как я понял, легче всего усваивается именно аналогиями.
0
mikkie #
Это попахивает кривыми руками разработчика данной страницы. Есть любители выгресбти на страницу все что только возможно, отключить кеш, итд итп
+3
huze #
Есть замечательная народная мудрость: хочешь, чтобы всё было хорошо — сделай это сам. Конечно, можно ужасаться, разглядывая эти запросы, а можно не разглядывать их, а сделать свои.

К сожалению, многие пользователи Битрикса лишены возможности (способности скорее) реализовать свои идеи в коде. Более того, они пользуются этой не самой удачной с точки зрения архитектуры системой, и у них складывается определённое необъективное мнение о всём рынке в целом. И ответственность за это полностью ложится на разработчиков.
+8
maxic #
Самое интересное что весь набор Битрикса можно сделать гораздо легче, гибче и проще и быстрее.
Вот это то мне и не понятно. Как можно было создать такого монстра.

Ну ладно создали. Так еще и денег за него требовать и немалых.

А потом «разводят» разные «директора по работе с клиентами», директоров компаний которые не понимают в этом совсем ничего.
Извините резко. Самый натуральный развод кроликов.

+3
Okspen #
Как хорошо, что это хоть кто-то понимает!
+1
nekt #
это называется «клиент-ориентированность» :)
0
taliban #
потом проще будет делать улучшения в скорости
лучший вариант сделать хорошо — сделать плохо, а потом переделать и сравнить с тем что было… ведь все познается в сравнении
+6
el777 #
Перенесите в тематический блог :)
Правда, завтра утром придут фанаты битрикса и заминусуют.
+11
maxic #
Я уже привык у меня моих «почитателей» очень много. Карма может плясать от +30 до -20 за 3 часа.
Я от фанатов уже устал. Честное слово. Они как маленькие дети у которых забрали любимую игрушку.
Еще не дочитывая до конца уже лезут к минусу. А аргументов — ноль.

Меня просто интересуют трезвые аргументы.

Пусть приводят, что я неправ и все системы cms должны иметь под 100 запросов и работать без индексов.
Пусть аргументирует только. Я редко когда минусую, только за личные оскорбления :)

Кстати фанатов Битрикса действительно хватает — я уже от них минусов нахватался, а два раза нельзя минусовать карму :) разве что троллить, а абуз команда habr-ы не спит ;)

–21
nekt #
Я вот считаю что ЦМС должны работать без баз данных. А то их что-то неудобно переносить, когда база данных отдельно валяется… еще конфиги прописывать. Буэээ. Пусть хотябы sqlite юзают, коли невмочь без полноценных запросов.
+4
balvardo #
Ну это как посмотреть. Если у вас «визитка» то да, возможно использование без не оправдано. А если магазин или корпоративный портал, то как же вы без баз то…
–3
nekt #
что в них хранить, чтобы держать отдельно базу? sqlite с лихвой покрывает все необходимое. Возможно чуть сложнее в разработке, но проще в установке, настройке и переносе.
+2
den_rad #
mysqldump и mysql — простые команды, облегчающие жизнь. А sqlite назвать бд можно с натяжкой, это такое удобное хранилище данных, с поддержкой SQL. Не будете же вы базу ~100-500 МБ на нем хранить??
0
nekt #
отчегож не буду? Буду. Не знаю что с такими объемами произойдет со скоростью доступа, но я уже давно понял что скорость доступа гораздо проще повысить кэшированием.
+2
EvilShadow #
А sqlite уже позволяет параллельный доступ множества процессов к одной базе?
–1
nekt #
Последовательный доступ тоже сгодится.
0
EvilShadow #
При низкой посещаемости — возможно.
0
nekt #
для высокой посещаемости стоит использовать иные методы. К примеру кэширование. К примеру акселераторы вроде nginx. На мой взгляд они с лихвой покрывают недостатки последовательного доступа.
0
propovednik #
nginx — акселлератор? Мама миа, я что-то пропустил :)
0
nekt #
А что такого? Это одна из основных его функций, насколько я знаю.
0
propovednik #
распределение нагрузки и акселерация — одно и то же? хм… А может акселерированное проксирование — ваше любимое занятие?
0
EvilShadow #
А sqlite уже позволяет параллельный доступ множества процессов к одной базе?
0
egorinsk #
sqlite имеет дурную привычку грузить при запуске (т е при каждом обращении к странице) в память все индексы таблиц. надеюсь, объяснять насколько это неэффективно, вам не надо?
0
nekt #
нет. не надо. Просто я не считаю что все это вообще надо делать.
0
egorinsk #
Блин, а как вы себе представляете выборку из таблицу на пару Гигов? Файлик построчно читать будете, или свои индексы полезете делать? Уверены, что лучше, чем у mysql получится?

Хотя, если вы купите 256-процессорный сервер… хотя нет, боюсь, даже это не поможет((

Базы в файлах — пережиток тех времен, когда не на всех даже платных хостингах был доступ к БД.

Если вам неудобно переносить — заюзайте нормальный дампер, который будет превращать содержимое БД в файл. И не парьте мозг людям.
+1
nekt #
пара гигов? На каком нормальном корпоративном сайте, созданном с помощью ЦМС, нужна база в пару гигов?
0
marginem #
бредовое утверждение.
0
nekt #
Если позволит время — я его распишу более подробно.
0
ruskar #
Лучше не стоит ;) Потеряете всю карму.
0
nekt #
По моим оценкам не всю, а только половину :)
0
maxic #
В свое время sqllite (так же как и smarty) хотели включить в поставку php. Но не включили.
Почему?
Так вот это потому что есть довольно стандартный MySQL, который стоит у всех хостеров.
Зачем изобретать велосипед и клонов, а также их поддерживать, когда существует уже готовый отличный проект. Если вам нравится sqllite — пользуйтесь, только потом не говорите что потеряли много времени и ресурсов — «просто так», вместо того чтобы продолжать совершенствовать себя в MySQL. Это просто совет «старика»
0
nekt #
хотел было проехаться на тему «старика», но не буду. Вроде проезд будет не по адресу. Мой опыт мускля позволяет использовать его достаточно гибко — я уже понахреначил в нем всяких разных ошибок. На данный момент мне не хватает его функций — я жажду перехода на объектные базы данных. В связи с этим гляжу в сторону перевода разработок на постгресс, который к этому по идее должен прийти быстрее. Плюс пытаюсь постичь изначально объектные базы данных вроде Cache. Это я к тому, что можно еще пообщаться на тему кто кого опытнее.

сам по себе sqlite я так и не поборол толком. Я потыркал его немного, после чего ушел на другие вещи. Но здесь более важна идеология. (Это есть ответ на вопрос «зачем изобретать велосипед»). sqlite — шаг на пути упрощения. Я считаю что у нас слишком навороченные структуры используются для примитивных в общем-то вещей. В частности отдельная сущность типа «базы данных» приводит к тому, что возникают проблемы с версиями оных, кодировками оных, переносе оных. Вместо простого и понятного копи-паста требуется выполнить ряд спецефических функций. А если при этом вспомнить, что изначально системы управления сайтами используются для удешевления поддержки и создания итогового продукта — то чем подобный подход кажется странным?
0
maxic #
Притча: одного мультимиллионера спросили:
— Вы богаты?
— Боюсь показать нищим по сравнению с миллиардером.
:)

sqllite: там даже больше пролем будет при установке. А MySQL сейчас у всех хостеров есть. Зачем пользователям забивать голову.
0
elfiki #
Дада, была вообще как-то идейка создать мегааццкий сайтик, состоящий из одного файлика в котором бы все и хранилось заодно. И админка в нем и контент в конце дописанный и куча всего еще :)
Похоже это идеал вашей системы)
+1
nekt #
не совсем. Я просто хочу единообразия. Ведь в конечном итоге весь контент, что идет к пользователю, по хорошему должен браться из кэша. А кэш как правило лежит в файликах на диске для быстроты чтения.
+4
maxic #
Пусть читают. Перенес. Не «кармой» на habr-e живу.

Своих героев — Родина должна знать в лицо :)
+3
mr_idiot #
А что, CMS, полностью состоящая из одного Mysql-запроса. Было бы забавно.
+2
maxic #
Если бы я привел бы вам еще 79 запросов такого плана, этот топик бы попал в книгу рекордов Гиннесса :)
0
enartemy #
Теоретически — это вполне возможно. Для этого необходимо простое условие — что бы все лежащие в базе данные имели один строго заданный формат. Действия CRUD пишутся в функцию, которая в звисимости от заданного флага выполняет соответствующее действие. Тогда получится, что все манипуляции с контентом — это один запрос, т.е. вызов этой самой функции.
+1
maxic #
Вот же перлы: не перестаю удивляться. Даже в самом простом.

SELECT G.ID
FROM b_group G
WHERE G.ANONYMOUS = 'Y'
AND G.ACTIVE = 'Y'

EXPLAIN:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE G ALL NULL NULL NULL NULL 12 Using where

А знаете «по чем» у них индекс в этой таблице по ID :)
+2
drJonnie #
В данном случае full table scan будет быстрее, чем выборка через индекс по обоим полям сразу, т.к. эти поля могут содержать только по два значения +null. Подробнее в статье Do you always need index on where?.
0
maovrn #
Поля ANONYMOUS и ACTIVE принимают всего два значения — 'Y' и 'N'. Строить по ним уникальный индекс неэффективно — проще сразу делать полное чтение таблицы. (заметил что drJonnie об этом уже сказал)
В Оракле на этот случай есть удобный и эффективный bitmap index — нечто вроде битовой карты.
ID проиндексирован, наверняка, для других запросов.
+2
bat #
ID проиндексирован, наверняка, для других запросов.

Надо полагать это PK
+4
maxic #
Мне web напоминает гонки «формула-1», где царит скорость, красота, «аэродинамика» и высокие технологии для увеличения скорости.
И представьте приходит в эти гонки «наш» дядя с тугим кошельком и покупает (заказывает) «наши» машины для участия в этих гонках. Вы представляете эти соревнования? 20 высокотехнологичных болида и 2 «тазика» с гайками на стартовой решетке :)
+1
voidus #
Чтобы сделать болид, нужно много очень грамотных инженеров. Чтобы каждая деталь была выточена в соответствии с множеством факторов. Обычные же CMS-ки — это конструкторы, из которых вы собираете машину под себя. Странно ожидать от бульдозера, собранного из вольво, оки, экаруса и бмв, скорости болида. Да и вы попробуйте написать нечто сложнее Hello World с фичами типа workspace, workflow и многоязычности, и увидите, что ваши концепции устаревают, что ваш код обрастает костылями, а запросов уже под сотню -)
да, я знаю, что у вас есть своя с Супер Пупер™ Архитектурой®; и если бы вы её не пиарили на каждом углу, размахивая своим NDA, к вам бы лучше относились люди.
+1
syncro #
вообще большой многолетний (особенно коммерческий) проект без фатальных архитектурных изъянов это скорее исключение из правил.
0
maxic #
Но когда эти костыли делают сами разработчики. На это тяжело смотреть.
А когда они еще и понятия не имеют про основы оптимизации mysql запросов. Это обидно вдвойне.
Такое ощущение, что её делало 1000 людей, 90% это дети после уроков информатики.
Вот что обидно, поймите правильно. Детские ошибки. Причем где? В запросах, т.е. там где всё должно быть выверено до мм. Я бы еще понял костыли в php — быстро писали, исправляли. А здесь запросы.

Или тяжело провести запросов на анализ EXPLAIN?
0
bat #
1С никогда не отличались изяществом в работе с БД.
0
t0H #
я бы даже сказал что вообще они «не отличались изяществом» :)
0
syncro #
ну представьте что есть кое-както работающий проект на котором сидит огромное количество клиентов и с которого ест множество сотрудников разного плана. Тут возникает техническая проблема (баг) решения у которой два:
переписать все с нуля этот нехороший проект
вставить костыль
Давайте попробуем оценить это в часах/деньгах. При этом учитывая, что расходы не гаратируют, что в новой архитектуре не будет изъянов, совсем не гаратирует, что клиенты сразу купят у вас новую версию и тоже все переделают, и уж точно это не будет решением проблемы заказчика у которого проявляется баг (хотябы в силу сроков).
Битрикс такой смешной потому что ему много лет, и разрабатывался он во времена когда реалии в веб-разработке тоже были совсем иные и задачи ставились попроще. Разрабатывался и поддерживался по модели, которую я выше обрисовал.
А что-бы улучшить надо разрабатывать новый битрикс поддерживая старый (дада, вставлять такие вот костыли, чтобы хотяб работало). Но это большой финансовый риск. Даже если новый получится удачным, врядли все кинутся на него переходить ведь это огромное количество людей со своими представлениями о целесообразности, от программиста который уже «привык так» до менеджера, который попросит перевести строки оптимизированных запросов в деньги. Т.е. такой новый продукт будет просто другим и еще и конкурирующим со старым от которого останется только бренд и возможно интерес 50и % процентов клиентов (это какой-то закон спроса).
0
maxic #
Кстати клиенты обычно смотрят «обвертку».
Но взять на работу одного грамотного оптимизатора то можно. Иначе потом костыли выползают у клиентом, они ругаются матом, заказывают у других разработчиков модули, а те в свою очередь клянут битрикс на чем свет стоит… разве это выход?
Возьмите одного (двух максимум) грамотного разработчика — они новую архитектуру сделают очень быстро. Просто надо ставить грамотные задачи Lead Ingineer — ом или руководителем проекта. Ну а если руководитель заблуждается… то пусть пишет сам… а свою теорию архитектуры писать дома — и потом доказать что руководитель не всегда прав :)
0
syncro #
во сколько часов вы бы оценили создание новой цмс уровня битрикса или друпала?
+2
hell #
на собственном опыте. придумать идею и спроектировать — суммарно около месяца (правда очень-очень сильно размазанного).
обкодить идею — 2 недели.
придумать внятный интерфейс — месяц
обаяксить интерфейс — неделя.
протестировать интерфейс — 2 недели.
как-то так.
разумеется в том случае, если первый этап (придумывание и проектирование) проведен на должном уровне.

P.S. На самом деле любоый web-проект достаточно примитивен, по сравнению, например, с трехмерными движками, или операционной системой.
P.P.S. А статистику (во всяком случае внутри), IMHO, лучше в CMS не интегрировать а делать совершенно отдельным модулем, никак на БД CMS не завязанным.
0
syncro #
~ 500 часов… друпал вряд ли получится, ну разве, что обрастая костылями со временем станет похоже на какую-нибудь комерческую ЦМС. Две недели на реализацю это маловато даже если программисты будут генерировать ~ 500-600 строк качественного кода в час. Кроме API документации другой видимо не планируется. Может вы действительно говорите о достаточно примитивном веб-проекте? Давайте говорить честно, моя_новая_цмс это совсем не тоже самое, что и проект с многолетней историей разработки (не говоря уже о продажах), даже если она за 500 часов по наворотам приблизится к образцу, еще один битрикс не нужен потому, что битрикс и даже небитриксы уже есть, а архитектурно идеального вечного продукта не будет никогда в силу каких-то природных особенностей (дай бог пару major версий интерпретатора/компилятора пережить)
0
vrom #
В аналогичной ситуации, кстати, находится TYPO3. Она даже старше Битрикса.
И вот года полтора назад начали писать с нуля новую версию, при этом продолжая развивать старую.
0
maxic #
И правильно делают… кстати сдесь (на habr-e) писали что стартап можно сделать за 3 мес. максимум 6, я сказал — можно — но насколько долго он продержится (такой сырой). Я сам пишу уже ~ 2 года.
1 год я только архитектурой туда сюда «баловался», пока не установилась. И год уже не меняя архитектуры — пишу код. Поверьте это очень тяжелый труд. В одной башке нужно столько помнить. И в основном все движки делаются одним человеком, тем кто задумал архитектуру — это не только в веб, но и везде (например Кармак — Quake). Поэтому так долго и пишутся. Плюс ко всему нужен еще контроль leed над всеми кто пишут модули, описания и т.п. Это кропотливый труд. Поэтому резко изменить архитектуру не у кого не получается. Это пару лет нужно кормить 1 го 2-х человек по «полной» программе )хорошими з/п). А результат может и не получится ;) Хотя при хорошей з/п и ен кривыми руками — успех 99,9% что получится
0
maxic #
Я согласен под конец проекта, он обрастает запросами.
Но. Если сразу подходит с точки зрения экономии запросов и их контроля, то под конец проекта — у вас будет вполне «принятное» их кол-во, причем довольно шустрые.
Те кто писал в личную почту, я отвечаю и делюсь алгоритмами. А те кто без причины кричит — пусть кричит далее. Т.е. кому надо те свяжутся и всё и увидят. Не обязательно получить всю версию. Они получают помощь на основе опыта создания. Алгоритмы, помощь в архитектуре и т.п.
Смеется тот кто смеются последний. Зачем мне что-то доказывать и распинаться. У каждого есть свое имхо. Кто хочет то всегда найдет ;)
НЛО прилетело и опубликовало эту надпись здесь
+2
kabachok #
скорее всего они у них учатся, а не угорают над ними. я про 1с
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
+1
nooze #
в mysql запросах часто можно встретить «where 1» :)
НЛО прилетело и опубликовало эту надпись здесь
0
pietrovich #
такое обычно вставляют в запросы которые потом планируют динамически дополнять условиями.
остутствует необходимость проверять нужен AND перед условием или нет (первое/не первое).
просто каждый раз при необходимости к запросу добавляется «AND еще_одно_условие»

в итоге получится
where 1 and first_condition AND second_condition и т.д.

а 1(666, 123, 1=1, 2=2) всегда дает TRUE и вроде даже скипается на этапе анализа запроса и проверка на него не выполняется…
+1
Dmor #
А что такое лаер для БД?
НЛО прилетело и опубликовало эту надпись здесь
0
Chikiro #
а в чем преимущество у WHERE ACTIVE = 'Y' по сравнению с WHERE ACTIVE = TRUE?
тонкостей баз данных и битрикса не знаю, но логика подсказывает, что Y и N — это что-то типа TRUE и FALSE.
НЛО прилетело и опубликовало эту надпись здесь
+1
thecoder #
Это может быть enum('Y','N'), а оно представляется битовыми флагами и очень быстро работает!
Так что разницы по скорости между true/ false и enum('Ну типа да','Пожалуй, нет, воздержусь') нет.
+6
ganzer #
там еще «M» — Maybe
0
AnatolyB #
Maybe — это ведь по смыслу NULL!
НЛО прилетело и опубликовало эту надпись здесь
+1
merlin_rterm #
если оно не NOT NULL, то может. Оно тогда получается tristate-полем — NULL, FALSE, TRUE.
НЛО прилетело и опубликовало эту надпись здесь
0
bat #
В БД трёхзначная логика.

P.S.
Что будет результатом выражения 1 = null, а null = null
НЛО прилетело и опубликовало эту надпись здесь
0
bat #
а «null = null»?
НЛО прилетело и опубликовало эту надпись здесь
+1
bat #
«null = null» === «1 = 1».
This is default part of query for lots of SQL Injections.

Источник?

ЗЫ
«1 = 1» даст true
«null = null» — нет

"… where 1=null" — пустая выборка
"… where not(1=null)" — тоже пустая выборка
любое сравнение с null даст null, кроме проверки на nulll.
НЛО прилетело и опубликовало эту надпись здесь
+2
donPedro #
Там скорее всего тип поля ENUM — перечисляемый тип. И, скорее всего, он имеет 2 возможных знвчения: 'Y', 'N'.
0
romka777 #
разве в mysql есть тип данных boolean
0
poorum #
в старых версиях был, потом упразднили, вроде.
+7
develop7 #
и эти люди запрещают мне ковыряться в носу [x]
+1
linuxxspb #
Это ещё что, для нас одна фирма делала сайт, так они всю информацию хранили в одной(1!) таблице, тоесть меню, статьи какие-нибудь, информацию о товарах, отзывы, всё короче… и самое главное это умудряется ещё как-то работать.
0
thestorm #
надо было как-то на одном сайте поменять то ли цвет, то ли еще какие-то стилистические параметры. долго искал, пока не нашел что CSS хранится в базе. причем в базе практически ничего больше не хранится, весь сайт практически статичный. в базе только CSS и еще пару табличек.
НЛО прилетело и опубликовало эту надпись здесь
0
maxic #
Ну и какие проблемы? ;)
Если индексы сделаны правильно и архитектура, то content можно хранить в одной таблице, точнее описание контента. А сам контент (текст) в другой таблице. А если описания как обьектов?

Ну если конечно всё свалено скопом и беспорядочно — то это конечно лажа.
+1
thestorm #
я не перестаю повторяю слова, что есть хорошие программисты, а есть хорошие маркетологи. вот у 1с, битрикс, касперского и microsoft хорошие маркетологи.
0
infostart #
А можно узнать в каком файле этот запрос?
Может они надеятся на механизм кеширования результатов работы их компонент. Время обновления кеша для каждой компоненты настраивается, поэтому запросы выполняются не так часто. Может поэтому, над оптимизацией запроса не задумывается, а делают его максимально удобным для себя.
0
maxic #
Этот запрос был взят с «главной» при включенной «галочке» sql :)
Скорее всего его делает «рендер».
Кешировать тоже с умом надо. Я тоже кеширую и все кешируют, но извините при нагрузке никакой кеш не спасет от таких запросов. Мало того их ~50% от всей суммы запросов (которые работают без индексов) на странице.
Знаете те же функции делает например Drupal — 30 запросами и очень быстро и грамотно. И при том бемплатен. Единственные минус Drupal — это его юзабилити. Её просто нет.
Кстати разработчики Drupal обратились в специализированную компанию, она им дала отчет (у меня где-то pdf был) — результат юзабилити Drupal — просто ужасно.
0
xaxaTyH #
Ой, а поделитесь пожалуйста?
0
fantom_ua #
Такое ощущение что код писали индусы
0
nllm #
Горькая правда
0
t0H #
ну а что Вы хотели?
Битрикс давно уже 1С выкупила…
(я не знаю, как у них там с запросами и прочим обстояли дела раньше)
–2
MScoder #
битрикс ни кто не выкупал, это совместное предприятие 1С и Битрикс
0
t0H #
изначально, на сколько я помню, приставки 1С небыло и вот только недавно она появилась…
к чему бы это?
0
glukas #
Всё верно. Изначально Битрикс был сам по себе. И буквально недавно стал подразделением 1С. теперь это совместное предприятие.
0
MScoder #
да сколько можно, какое подразделение?
www.1c.ru/news/pressrelise.jsp?id=659
0
MScoder #
к тому, что весной открылась отдельная контора 1С-Битрикс с долевым участием 1С и Битрикс
0
pixx #
На самом деле, есть инфа через десятые уста, что очень большой отдел 1С-Битрикс работает отдельно от других над чем-то супер-секретным, и вы знаете, я догадываюсь, что это новый движок для их CMS (ибо давно пора, и автор поста америку не открыл).
0
t0H #
новый движок?… это врятли, слишком многа бабла они в него уже вбухали, во всяком случае не на php, может просто новые альтернативные продукты…
вот я у них на сайте тока что нашёл версию на ASP.NET… вот может это ее делали?
0
maxic #
Врядли откажутся от «старого». Хотя как раз и надо было бы.
А что они сделают? Cвой же реляционно-модульный клон?
Или сделают на базе FW?
Потом опять кто-то уволится (ведущий разработчик), придет второй, третий, четвертый и будет… война монстро-клонов?
Архитектуру надо менять, потому что в таких условиях реляционно-модульная модель не работает, она работает на os проектах, которые «до последнего» ведут те, кто их задумывал, которые держат стратегию и политику архитектуры.
0
poorum #
Там на .net движок обещался. Может его и делают? Там-то в любом случае все с нуля писать, можно и архитектуру между делом очеловечить и запросы выправить. MSSQL более строгая бд нежели mysql, многие касяки и отклонения от классического SQL, незаметные для mysql, не прощает.
0
bat #
MSSQL более строгая бд нежели mysql, многие касяки и отклонения от классического SQL, незаметные для mysql, не прощает.

Но, тем не менее, при реализации для 1С редакции под MSSQL, последняя была использована тупо как хранилище данных, зачем знать какая она строгая и т.п., работаем как с DBF, читаем все и на клиенте отсекаем ненужное, и продолжаем рубить бабло…
–4
AmdY #
Битрикс молодцы — дарят людям работу, теперь я зауважал битрикс-программистов, чтобы такой код оптимизировать нужна уйма мозгов.
0
bat #
чтобы не писать такой код тоже мозги нужны
+1
AmdY #
зачем же мозги, здесь же Рижков писал про свою теорию кратковременных направленных толчков, её даже не заминусовали. а сейчас смотрим продукт этой теории и жалуемся. им же главное эксперименты на разработчиках ставить, а не за качеством продукта следить. логи проста: зачем париться и писать хорошо, если потом арава кодеров за гроши будет затачивать битрикс под нужды проекта.
но при этом я прекрасно осознаю, что многие способны понаписывать код гораздо хуже :(
0
freehome #
Так как таблиц там весьма много, запросы генерируются «на лету».
Отсюда и подобные грабли.
+1
t0H #
я нашел этот код :) в Битриксе… это модуль статистики такое генерит, на проверку из Стоп листа :)
+3
maxic #
Совершенно верно :)
bitrix\modules\statistic\classes\mysql\stoplist.php:195

Но не важно откуда он вызван — там таких «запросов» хватает и из других модулей :\
И самое интересное.
Статистика запросов:
Время создания страницы: 2.2123 сек.
Всего SQL запросов: 62
Время исполнения запросов: 0.2135 сек.

Но когда нажимаешь на статистику запросов — показывает только:

Путь к файлу: /e-store/books/index.php
Время генерации: 2.2123 сек.
Всего запросов: 23, время: 0.0404 сек. (1.83%)

А где еще ~40 запросов «пропало»?

А их надо выискивать! и Что мы находим? монстров! И их много!

SELECT DISTINCT BE.ID as ID,BE.NAME as NAME,BE.CODE as CODE,BE.IBLOCK_ID as IBLOCK_ID,BE.IBLOCK_SECTION_ID as IBLOCK_SECTION_ID,B.DETAIL_PAGE_URL as DETAIL_PAGE_URL,BE.DETAIL_TEXT as DETAIL_TEXT,BE.DETAIL_TEXT_TYPE as DETAIL_TEXT_TYPE,BE.DETAIL_PICTURE as DETAIL_PICTURE,BE.PREVIEW_TEXT as PREVIEW_TEXT,BE.PREVIEW_TEXT_TYPE as PREVIEW_TEXT_TYPE,BE.PREVIEW_PICTURE as PREVIEW_PICTURE,L.DIR as LANG_DIR,BE.XML_ID as EXTERNAL_ID,B.IBLOCK_TYPE_ID as IBLOCK_TYPE_ID,B.CODE as IBLOCK_CODE,B.XML_ID as IBLOCK_EXTERNAL_ID
FROM b_iblock B
INNER JOIN b_lang L ON B.LID=L.LID
INNER JOIN b_iblock_element BE ON BE.IBLOCK_ID = B.ID
INNER JOIN b_iblock_section_element BSE ON BSE.IBLOCK_ELEMENT_ID = BE.ID
INNER JOIN b_iblock_section BSubS ON BSE.IBLOCK_SECTION_ID = BSubS.ID
INNER JOIN b_iblock_section BS ON (BSubS.IBLOCK_ID=BS.IBLOCK_ID AND BSubS.LEFT_MARGIN>=BS.LEFT_MARGIN AND BSubS.RIGHT_MARGIN<=BS.RIGHT_MARGIN)
WHERE 1=1 AND B.ID IN (0,30) AND ( (BE.WF_STATUS_ID=1 AND BE.WF_PARENT_ELEMENT_ID IS NULL) ) AND ((((BE.IBLOCK_ID = '30')))) AND (((BE.ACTIVE_TO >= now() OR BE.ACTIVE_TO IS NULL) AND (BE.ACTIVE_
FROM <= now() OR BE.ACTIVE_
FROM IS NULL))) AND ((((BE.ACTIVE='Y')))) AND ((BS.ID = 145))
ORDER BY BE.SORT asc, BE.ID desc LIMIT 0, 5

И здесь как и положено создается временный индекс а также filesort

0
bat #
Время создания страницы: 2.2123 сек.
Всего SQL запросов: 62
Время исполнения запросов: 0.2135 сек.

Опа!
2.2123 — 0.2135 = ~2 сек
А чем оно еще две секунды занимается?
0
t0H #
оставшиеся 60 запросов по столько же + загрузка картинок и всего всего…
вот вам и 2с
0
bat #
1. откуда вы взяли еще 60 запросов?
2. php скрипт ничего не знает когда и как долго грузятся картинки. рассмешили прямо.
0
t0H #
И самое интересное.
Статистика запросов:
Время создания страницы: 2.2123 сек.
Всего SQL запросов: 62
Время исполнения запросов: 0.2135 сек.

  • 1. Прочитайте коммент, на который Вы отвечали выше, внимательнее и поймёте откуда столько запросов.....
  • 2. А насчёт картинок согласен, погорячилсо… Но с кем не бывает? :)
+7
maxic #
Или вот еще монстр…

SELECT DISTINCT B.TYPE_SID, B.ID BANNER_ID, B.WEIGHT BANNER_WEIGHT, B.SHOWS_FOR_VISITOR, B.FIX_CLICK, B.FIX_SHOW, B.KEYWORDS BANNER_KEYWORDS, C.ID CONTRACT_ID, C.WEIGHT CONTRACT_WEIGHT, C.KEYWORDS CONTRACT_KEYWORDS FROM b_adv_type T
INNER JOIN b_adv_banner B ON ( B.ACTIVE='Y' and B.TYPE_SID = T.SID and B.STATUS_SID = 'PUBLISHED' and (B.FOR_NEW_GUEST is null or B.FOR_NEW_GUEST='N') and (ifnull(B.MAX_SHOW_COUNT,0)>ifnull(B.SHOW_COUNT,0) or ifnull(B.MAX_SHOW_COUNT,0)=0) and (ifnull(B.MAX_CLICK_COUNT,0)>ifnull(B.CLICK_COUNT,0) or ifnull(B.MAX_CLICK_COUNT,0)=0) and (ifnull(B.MAX_VISITOR_COUNT,0)>ifnull(B.VISITOR_COUNT,0) or ifnull(B.MAX_VISITOR_COUNT,0)=0) and (B.DATE_SHOW_FROM<=now() or B.DATE_SHOW_
FROM is null or length(B.DATE_SHOW_FROM)<=0) and (B.DATE_SHOW_TO>=now() or B.DATE_SHOW_TO is null or length(B.DATE_SHOW_TO)<=0))
INNER JOIN b_adv_banner_2_site BS ON ( BS.BANNER_ID = B.ID and BS.SITE_ID = 'ru')
INNER JOIN b_adv_contract C ON ( C.ID = B.CONTRACT_ID and C.ACTIVE='Y' and (ifnull(C.MAX_SHOW_COUNT,0)>ifnull(C.SHOW_COUNT,0) or ifnull(C.MAX_SHOW_COUNT,0)=0) and (ifnull(C.MAX_CLICK_COUNT,0)>ifnull(C.CLICK_COUNT,0) or ifnull(C.MAX_CLICK_COUNT,0)=0) and (ifnull(C.MAX_VISITOR_COUNT,0)>ifnull(C.VISITOR_COUNT,0) or ifnull(C.MAX_VISITOR_COUNT,0)=0) and (C.DATE_SHOW_FROM<=now() or C.DATE_SHOW_
FROM is null or length(C.DATE_SHOW_FROM)<=0) and (C.DATE_SHOW_TO>=now() or C.DATE_SHOW_TO is null or length(C.DATE_SHOW_TO)<=0))
INNER JOIN b_adv_contract_2_site CS ON ( CS.CONTRACT_ID = B.CONTRACT_ID and CS.SITE_ID = 'ru')
INNER JOIN b_adv_contract_2_type CT ON ( CT.CONTRACT_ID = C.ID and (CT.TYPE_SID = 'ALL' or CT.TYPE_SID = T.SID))
INNER JOIN b_adv_banner_2_weekday BW ON ( BW.BANNER_ID = B.ID and BW.C_WEEKDAY='SUNDAY' and BW.C_HOUR = '11')
INNER JOIN b_adv_contract_2_weekday CW ON ( CW.CONTRACT_ID = C.ID and CW.C_WEEKDAY='SUNDAY' and CW.C_HOUR = '11')
LEFT JOIN b_adv_banner_2_group UG1 ON ( (UG1.BANNER_ID = B.ID and UG1.GROUP_ID in (2,1,21)) )
LEFT JOIN b_adv_banner_2_page BP1 ON ( BP1.BANNER_ID = B.ID and BP1.SHOW_ON_PAGE='Y')
LEFT JOIN b_adv_banner_2_page BP2 ON ( BP2.BANNER_ID = B.ID and BP2.SHOW_ON_PAGE='N' and '/e-store/books/index.php?SECTION_ID=145' like concat(BP2.PAGE, '%'))
LEFT JOIN b_adv_contract_2_page CP1 ON ( CP1.CONTRACT_ID = C.ID and CP1.SHOW_ON_PAGE='Y')
LEFT JOIN b_adv_contract_2_page CP2 ON ( CP2.CONTRACT_ID = C.ID and CP2.SHOW_ON_PAGE='N' and '/e-store/books/index.php?SECTION_ID=145' like concat(CP2.PAGE, '%'))
LEFT JOIN b_adv_banner_2_stat_adv BA ON BA.BANNER_ID = B.ID
LEFT JOIN b_adv_banner_2_country BC ON BC.BANNER_ID = B.ID WHERE T.ACTIVE = 'Y' and BP2.ID is null and CP2.ID is null and (BP1.ID is null or '/e-store/books/index.php?SECTION_ID=145' like concat(BP1.PAGE, '%')) and (CP1.ID is null or '/e-store/books/index.php?SECTION_ID=145' like concat(CP1.PAGE, '%')) and (BA.STAT_ADV_ID is null or BA.STAT_ADV_ID='0') and (BC.COUNTRY_ID is null or BC.COUNTRY_ID='N0') and ( (B.SHOW_USER_GROUP = 'Y' and UG1.GROUP_ID is not null) or (B.SHOW_USER_GROUP <> 'Y' and UG1.GROUP_ID is null) )
ORDER BY B.TYPE_SID desc, C.ID desc

Да какие там индексы :) Он на пару записях спотыкается
+4
nooze #
OMG! Да такой приснится, в холодном поту с кровать вскочишь
0
poorum #
У них там под 300 таблиц. Надо же их где-то вызывать, вот и вы зывают. Хорошо не все одновременно )))
+6
DileSoft #
У нас так много хороших таблиц, а давайте мы их всех вызовем!
0
t0H #
вот это действительно сташный запрос…
я даже предположить не решаюсь что он выдает на выходе :/
0
DileSoft #
Я не понимаю одного.

Как они его написали?
0
t0H #
по моему с закрытыми глазами :)
лично у меня от такого бы точно кошмары были… ну или вообще сон пропал…
0
maxic #
А они его и не писали.
Это «рендер» запросов его написал.
Поступили данные — «рендер» — породил монстра
+3
asc #
моя первая мысль от этого топика: «Неэжели это новый код в неткат?»
+1
darkwire #
зато гавнокодное ядро в сочетание с красотами интерфейса Битрикса вдохновляет начинающих PHP программистов писать свои движки и framework'и :)
–3
MScoder #
не хотел писать, на напишу все же, и в принципе реакция не важна
пока кто-то сидит разбирает запросы на хабре, пишет, что битрикс — говнокод, битрикс зарабатывает деньги.
пока кто то считает сколько таблиц в битриксе (при чем считают таблицы в редакции бизнес, и такое ощущение, что функционал совсем не смотрят, т.к. это количество оправдано функционалом), битрикс зарабатывает деньги.
да, много лишнего (отчасти из-за совместимости с предыдущими версиями), да, где то не хорошо, но продукт развивается, оптимизируется и становится лидером российски коробочных решений.
высказывания типа «это для того, что бы потом еще срубить бабла на обновлениях» — битрикс каждый месяц выпускает обновления, которые достаются клиенту бесплатно в течении года.
высказывания типа «он тупит» и т.д. — да система ресурсоемкая, все об этом знают, но ведь есть демка Бизнеса (максимальная комплектация из линейки управления сайтом), поставьте на свой хостинг и попробуйте. опять же требования к хостингу есть на сайте битрикса. если у вас сайт «тупит» на мастерхосте на специализированном тарифном плане, то идите в сапорт мастерхоста, т.к. это их вина, а не битрикса, и это было не однократно проверено. почему то на других хостах и не на специализированных тарифах битрикс работает нормально.
в общем к чему я все это, пока кто-то то сидит и пишет как все хреново, кто-то зарабатывает нормальные деньги. считаете, что все хреново, сделайте альтернативу с волшебным кодом, комментариями каждой строчки, минимальным количеством запросов и временем генерации страницы 0.00000001.
в чужом глазу соринку замечаем, в своем бревна не видем.
опять же вспоминается виндовс, все плюются, но пользуются. а потому что альтернативы нет.
все, всем спасибо
0
xazel #
> не хотел писать, на напишу все же

Не хочешь писать — не пиши, а мне вот просто интересно: вот родился человек, жил себе, жил, учился, работал где-нить, а потом раз, и выдал однажды такой запрос, как в сабже… откуда это всё? где он нахватался? как, блять, такое вообще в голову прийти может???

Функционал функционалом, но кому он нахуй нужен, если люди вообще не вдумываются что они пишут и как они это делают… этап оптимизации в их жизненном цикле вообще отсутствует?
+1
glukas #
Надо заметить все эти запросы формируются не руками а скриптами… т.е. на ходу… Дань расширяемости и универсальности.
0
antonds #
> этап оптимизации в их жизненном цикле вообще отсутствует?
С каждого миллиона выделяется парасот именно на это.
–1
chaosty #
Смысл лишь в том, что битрикс подходит компаниям с посещаемостью меньше 50 человек на сайте онлайн. Как только будет больше, тех поддержка битрикса убьется головой апстену. Потому что он НЕ ВЫДЕРЖИТ нагрузки, что дальше будет? Клиенты уйдут, что потеряет компания? Деньги. Хренли кто-то думает, кто-то нет. Битрикс видимо не думает.
+1
MScoder #
работали над проектом по продаже билетов на евро 2008 (на битриксе), после серии побед России посещаемость возросла до 5000 тыс. уников, выдержал и битрикс и хостинг. Площадка не заметила увеличения посещаемости. Так что опять, голословны.
–2
chaosty #
Хотите сказать что битрикс выдержал 5000единовременных запросов в единицу времени? каждый запрос это ~50 запросов в БД. И все это еще и на шареде? :) Не заврались?

Если же это в сутки — 5000\24 = 208 в час, 3.4 в секунду. Это не не 50 «рефрешей» в ед\времени.

Давайте попробуем ab -n 1000 -c 100 site_na_bitrix, с НЕ пустой БД, а обычный работающий сайт… мне даже инетересно, хотя бы одна итерация успешно завершится?
0
MScoder #
5000 в сутки, как то посещаемость в единовременных запросах не измерял и не встречал особо…

а у вас что то с математикой… 5000\86400 = 0.05 в секунду

–1
chaosty #
в секунду == в минуту.

А я спрашивал про более 50 единовременных запросов. Видите даже примера крупного ресурса на битрикс превести не можете…

0
MScoder #
да вы как бы и не просили особо
eldorado.ru, на всякий случай статистика top100.rambler.ru/cgi-bin/stats_top100.cgi?1012457
www.e-xecutive.ru, статистика www.liveinternet.ru/stat/e-xecutive.ru/, мало ли

или это так, мелочевка?
0
bat #
> Хотите сказать что битрикс выдержал 5000 единовременных запросов в единицу времени
скорее всего в сутки.
эта цифра больше говорит об аудитории, чем о нагрузке.

> 50 человек на сайте онлайн
что вы под этим понимаете?
0
chaosty #
запросов в секунду
+1
AstralMan #
Мне как-то приходилось иметь дело с коммерческим продуктом «Аскина» стоимостью более 20 килобаксов…
Больше половины запросов пришлось переписывать, т.к. выборки занимали до 10 минут, а оптимизировал до 1секунды…
Когда я первый раз посмотрел их код, хотелось просто застрелиться! Вот такие у нас комм.продукты =)
0
nerezus #
Ребята правильно делают: тем, кто согласен покупать говно с сапортом за деньги, этот продукт и предназначен.
Тем, кого не устраивает — используют качественные открытые продукты, либо платят бОльшие деньги для разработки своего.

Но не стоит думать, что сапорт никому не нужен. А на то, что код говно, многим наплевать, важнее им, чтобы хоть как-то работало. Причем работало правильно.
–1
marginem #
надо еще не забывать огромную партнерскую сеть битрикса (студии, занимающиеся разработкой на основе битрикса). остальным цмскам в рунете до такого масштаба далеко.
0
marginem #
смысл минусовать? ) кто-то со мной не согласен? прошу аргументировать :) кому-то не понравилось слово «битрикс»?
0
t0H #
Тут просто очнулся ярый нелюбитель «Битрикса»… и у всех, кто хоть что-то сказал в "+" «Битриксу» появилсо "-" :)
+1
termt #
Еще один пример когда обратная совместимость начинает идти в разрез здравому смыслу.
0
glukas #
Есть у Битрикса такая Болезнь ага… Но кстати надо сказать что в версии 7 по сравнению с версией 3, например — всё уже весьма радужнее :)
+2
VasilioRuzanni #
Ведь именно это называется «быдлокод», правда? Я ведь ничего не путаю? :)
0
surething #
решает юзабилити продукта. все прочие технические детали исправить дешевле.
0
thecoder #
Маркетинг, маркетинг у них классный, а не система.

Клиенты в код не смотрят до момента переделки сайта, а на это есть сеть партнеров, которые за деньги готовы разгребать и не такое.
Так что все шито-крыто :)
Моделируйте.
Скорость запросов на скорость продаж не влияет.
0
vitaminych #
Ну вы же понимаете, что не будут покупать систему «с самым правильным кодом»
0
maxic #
Вначале не влияет, а если быстро не исправить, то может и повлиять.
+1
micbsv #
>antonds

Чувак, я так понял как раз ты и пишешь это унылое говно?
Тогда просто молча согласись, что как программист ты такой же у.г. как и твой продукт – не ори, не позорь профессию.
–1
antonds #
Мы с вами на брудершафт пили, чтобы на «ты» перейти?
–1
antonds #
О, минус камента говорит что не пили (:
0
antonds #
Я все-таки поражаюсь обществу Хабры, у которых язык в заднице и они выражают «да/нет» минусами и плюсами. Иногда лучше жевать.
0
micbsv #
Нормально!
На х… послать — запросто, а на «ты» обижается. Че-то у _вас_ с системой ценостей не так.
А с теми, кто свой говно-код пытается оправдать комментами, типа «маркет хавает» я не то, что на брудершафт пить, я срать рядом не сяду.

P.S. Минусы я не ставил — пуль нет.
P.S.S. По моим наблюдениям, именно маркет рано или поздно сливает говно-кодеров на помойку.
0
antonds #
> На х… послать — запросто, а на «ты» обижается. Че-то у _вас_ с системой ценостей не так.

Все так. Посылая на хуй, можно проявить уважение. Парадоксально, но факт.

> кто свой говно-код пытается оправдать комментами, типа «маркет хавает»

Простите, мы с вами где-то пересекались? Точнее наши коды. Я где-то написал, что пишу какой-либо код, или принимаю в нем участие?
0
micbsv #
>Посылая на хуй, можно проявить уважение. Парадоксально, но факт.

Это ваша собственная теория что ли? Ну так я вам скажу, что она тоже — у.г.

>Я где-то написал, что пишу какой-либо код, или принимаю в нем участие?

Ну вообще-то все ваши посты в этом топике явно на это указывают. Даже если именно этот код писали не вы, защита такого стиля автоматически ставит вас под удар. Раз вы начали постить, значит знали на что шли, че теперь-то отнекиваться?
0
antonds #
> Это ваша собственная теория что ли?
Да.

> Ну так я вам скажу, что она тоже — у.г.
Буду иметь в виду.

> Ну вообще-то все ваши посты в этом топике явно на это указывают.
Спасибо что прочитали.

> Раз вы начали постить, значит знали на что шли, че теперь-то отнекиваться?
Я где-то отнекивался?

PS: Вы что-то какой-то напряженный. Не дают?
0
micbsv #
У-у-у, сынок, так ты еще и совсем молод к тому же. Ну тогда все понятно.
Да-да, не дают. Говно-кодеры покоя не дают — заебали. Только тут у нас в основном индусские, но тоже хороши, типа вас.
0
antonds #
> У-у-у, сынок, так ты еще и совсем молод к тому же
Где как. Где-то повидал уже, где-то да, молод. А с чего такое заключение? С того, что теорию такую выдвинул?

> Говно-кодеры покоя не дают
Я именно это и спрашивал. В свете этого вопрос выше актуален.

> Только тут у нас в основном индусские
У вас, это где? Судя по профилю — США. Кризис не затронул? Работа, дом там…

Только я все равно не понимаю — как они (мы?) вас заебали? Ну они есть, пишут себе код, вам то от этого что? Или вы за чистоту великого и могучего кода? Или вы думаете, что от того, что кричите как вас это заебало, их станет меньше? Или вы привнесли чего-то умного в данный топик своим первым коментом?

Прекрасное воскресное утро. (хотя насколько оно прекрасно для вас я не знаю) Можно погулять, побыть с женой детьми, а вы сидите в этом топике и тратите на меня, индуса, время. Не обидно?
Задумайтесь о смысле жизни, мой вам совет. Мне 25, я еще успею задуматься. А вот вы…
0
micbsv #
>А с чего такое заключение? С того, что теорию такую выдвинул?

Да «не дают» все само рассказало.

>Кризис не затронул? Работа, дом там…

Пару месяцев назад я полный бак заливал на $60, вчера залил на $40. На стоки цены — просто прелесть, самое время покупать. Скидки празничные сейчас попрут. Настроение уже праздничное. Работы для программеров — валом. Президента недавно выбрали честным голосованием — не подарок, конечно, но могло бы быть и хуже.

Какой кризис? Где? По вашему телевидению что ли? В Газета.ру?
0
antonds #
Очень рад за вас и ваш бак. 20$ это как ни как, а пара часов быдлокодера.

Но сходите на улицу все-таки.
0
antonds #
Кстати, вы опять «ты» поставили. Исправляйтесь. Ну нельзя же так.
+2
Noker #
Спасибо огромное автору, сейчас я понимаю почему сервак тормозит из-за таких горе программистов. Знал я такого, думал он один такие фичи делает, а нет оказалось еще такие же умники существуют.
+1
Rulin #
добавьте теги: Битрикс, bitrix
0
maxshopen #
Когда запросы начинают генерить скрипты, а не люди — рано или поздно появляются такие запросы.

Смотрится конечно отвратно. Это я к тому, что хорошо работающий запрос должен выглядеть красиво, чего тут не наблюдается
0
bat #
хорошо работающий запрос должен выглядеть красиво

хорошо работающий запрос прежде всего должен работать.
0
maxshopen #
«Работать» будет любой запрос не вызывающий ошибки и возвращающий правильный результат, другое дело как он будет работать. Впрочем вы не стали задумываться и не поняли что я хотел сказать, ну и ладно :)
0
bat #
Скорее вы не поняли меня.
«хорошо работающий запрос» != «работающий запрос» (т.е. «любой запрос не вызывающий ошибки и возвращающий правильный результат»).

Я имел ввиду:
как выглядит запрос — второстепенно, и зачем это требовать от сгенерированного запроса. А плохой запрос, как не форматируй, останется плохим.
0
micbsv #
>Когда запросы начинают генерить скрипты, а не люди — рано или поздно появляются такие запросы.

Это не так. Например Linq to SQL генерит запросы, но если будет такой кошмар, то просто пишется store proc и вызывается тем же Linq. А внутри процедуры, сами понимаете, все в вашей власти.
0
syncro #
бывают и приличные генераторы, тут, вероятно, тоже от людей зависит
0
maxic #
В большом проекте без генерации скриптом запросов никак :\
Вы что-то можете другое предложить?
Просто надо «рендер» запросов писать нормально. Далее.
А расширяемость для разработчиков? Без «рендера» здесь никак. А безопасность? Опять же с рендером спокойнее.

Просто изначально надо архитектуру делать нормальную проекта, тогда и «рендер» запросов будет делать «красивые» запросы. Всё дело не «рендерах», а тех кто их «пишет» :)
C кривыми руками, можно и запрос «руками» сделать настолько корявый и тормозной, что поможет только «указкой по рукам»
+1
mikkie #
универсальный запрос для десятка задач никогда не будет красивый, а одиночные выборки, думаю сами в состоянии написать?
0
maxic #
При «правильной» архитектуре и хорошем «рендере» — может и получится ;)
(могу напомнить про модное сейчас слово — унификация — она одна может сократить архитектуру и «запросы» как минимум в 3-4 раза.) При всем желании тогда не получаются монстры :)
И еще.
Существуют всего пара правил которых нужно придерживаться, т.е. «стратегия»
0
mikkie #
В теории и на модных словах оно все так красиво и радужно. Однако на практике, и десятой доли не получается. Поэтому винить в крокодило-запросах можно легко и любого, а вот с оптимизировать его, хоть на 1\1000 мс оставив весь функционал и логику, что то в данном сабже никто не смог.
0
maxic #
:)
Уже и нельзя будет — легче будет архитектуру с нуля сделать. В представялете что такое оптимизировать запросы для реляционной модели 200 (!) таблиц. Одни join-ы сьедят всю производительность.
Интересно. Вопрос тем кто работает в Битрикс. Существует ли параллельно разработка новой версии с новой архитектурой?
0
mikkie #
Ну да конечно =) лучше все в 1 табличку затолкать =).
Однако, опять же от Вас это звучит как «я поменяю и это решит _мою_ задачу», а не «это решит 40% возможных задач». Как я говорил Выше универсальные запросы не могут претендовать на мега производительность и красивость. Здесь краеугольный камень:
1) быстро но 1 задача
2) тормознутее но 100 задач
0
bat #
В представялете что такое оптимизировать запросы для реляционной модели 200 (!) таблиц

Оптимизировать такие схемы можно, 200 не так уж и много.

Не надо оптимизировать все запросы. В течение дня профилируем запросы и сохраняем результаты, анализируем, и, в первую очередь, пытаемся оптимизировать 20% запросов, которые суммарно занимают 80% времени. Это может дать заметный выигрыш.
+2
bazzzman #
Я ещё вот такое там видел :(((((((((((((((((((((((((((

SELECT DISTINCT B.TYPE_SID, B.ID BANNER_ID, B.WEIGHT BANNER_WEIGHT, B.SHOWS_FOR_VISITOR, B.FIX_CLICK, B.FIX_SHOW, B.KEYWORDS BANNER_KEYWORDS, DATE_FORMAT(B.DATE_SHOW_FIRST, '%d.%m.%Y %H:%i:%s') DATE_SHOW_FIRST, DATE_FORMAT(B.DATE_SHOW_FROM, '%d.%m.%Y %H:%i:%s') DATE_SHOW_FROM, DATE_FORMAT(B.DATE_SHOW_TO, '%d.%m.%Y %H:%i:%s') DATE_SHOW_TO, B.FLYUNIFORM FLYUNIFORM, B.MAX_SHOW_COUNT MAX_SHOW_COUNT, B.SHOW_COUNT SHOW_COUNT, C.ID CONTRACT_ID, C.WEIGHT CONTRACT_WEIGHT, C.KEYWORDS CONTRACT_KEYWORDS
FROM
b_adv_type T
INNER JOIN b_adv_banner B ON ( B.ACTIVE='Y' and B.TYPE_SID = T.SID and B.STATUS_SID = 'PUBLISHED' and (B.FOR_NEW_GUEST is null or B.FOR_NEW_GUEST='Y') and (ifnull(B.MAX_SHOW_COUNT,0)>ifnull(B.SHOW_COUNT,0) or ifnull(B.MAX_SHOW_COUNT,0)=0) and (ifnull(B.MAX_CLICK_COUNT,0)>ifnull(B.CLICK_COUNT,0) or ifnull(B.MAX_CLICK_COUNT,0)=0) and (ifnull(B.MAX_VISITOR_COUNT,0)>ifnull(B.VISITOR_COUNT,0) or ifnull(B.MAX_VISITOR_COUNT,0)=0) and (B.DATE_SHOW_FROM<=now() or B.DATE_SHOW_FROM is null or length(B.DATE_SHOW_FROM)<=0) and (B.DATE_SHOW_TO>=now() or B.DATE_SHOW_TO is null or length(B.DATE_SHOW_TO)<=0))
INNER JOIN b_adv_banner_2_site BS ON ( BS.BANNER_ID = B.ID and BS.SITE_ID = 's1')
INNER JOIN b_adv_contract C ON ( C.ID = B.CONTRACT_ID and C.ACTIVE='Y' and (ifnull(C.MAX_SHOW_COUNT,0)>ifnull(C.SHOW_COUNT,0) or ifnull(C.MAX_SHOW_COUNT,0)=0) and (ifnull(C.MAX_CLICK_COUNT,0)>ifnull(C.CLICK_COUNT,0) or ifnull(C.MAX_CLICK_COUNT,0)=0) and (ifnull(C.MAX_VISITOR_COUNT,0)>ifnull(C.VISITOR_COUNT,0) or ifnull(C.MAX_VISITOR_COUNT,0)=0) and (C.DATE_SHOW_FROM<=now() or C.DATE_SHOW_FROM is null or length(C.DATE_SHOW_FROM)<=0) and (C.DATE_SHOW_TO>=now() or C.DATE_SHOW_TO is null or length(C.DATE_SHOW_TO)<=0))
INNER JOIN b_adv_contract_2_site CS ON ( CS.CONTRACT_ID = B.CONTRACT_ID and CS.SITE_ID = 's1')
INNER JOIN b_adv_contract_2_type CT ON ( CT.CONTRACT_ID = C.ID and (CT.TYPE_SID = 'ALL' or CT.TYPE_SID = T.SID))
INNER JOIN b_adv_banner_2_weekday BW ON ( BW.BANNER_ID = B.ID and BW.C_WEEKDAY='MONDAY' and BW.C_HOUR = '5')
INNER JOIN b_adv_contract_2_weekday CW ON ( CW.CONTRACT_ID = C.ID and CW.C_WEEKDAY='MONDAY' and CW.C_HOUR = '5')
LEFT JOIN b_adv_banner_2_group UG1 ON ( (UG1.BANNER_ID = B.ID and UG1.GROUP_ID in (2,1)) )
LEFT JOIN b_adv_banner_2_page BP1 ON ( BP1.BANNER_ID = B.ID and BP1.SHOW_ON_PAGE='Y')
LEFT JOIN b_adv_banner_2_page BP2 ON ( BP2.BANNER_ID = B.ID and BP2.SHOW_ON_PAGE='N' and '/index.php?show_sql_stat=Y&finish=&back_url_admin=%2Fbitrix%2Fadmin%2Fsettings.php%3Flang%3Dru%26mid%3Dphotogallery&bitrix_include_areas=Y&bitrix_show_mode=configure' like concat(BP2.PAGE, '%'))
LEFT JOIN b_adv_contract_2_page CP1 ON ( CP1.CONTRACT_ID = C.ID and CP1.SHOW_ON_PAGE='Y')
LEFT JOIN b_adv_contract_2_page CP2 ON ( CP2.CONTRACT_ID = C.ID and CP2.SHOW_ON_PAGE='N' and '/index.php?show_sql_stat=Y&finish=&back_url_admin=%2Fbitrix%2Fadmin%2Fsettings.php%3Flang%3Dru%26mid%3Dphotogallery&bitrix_include_areas=Y&bitrix_show_mode=configure' like concat(CP2.PAGE, '%'))
LEFT JOIN b_adv_banner_2_stat_adv BA ON BA.BANNER_ID = B.ID
LEFT JOIN b_adv_banner_2_country BC ON BC.BANNER_ID = B.ID
WHERE
T.ACTIVE = 'Y' and BP2.ID is null and CP2.ID is null and (BP1.ID is null or '/index.php?show_sql_stat=Y&finish=&back_url_admin=%2Fbitrix%2Fadmin%2Fsettings.php%3Flang%3Dru%26mid%3Dphotogallery&bitrix_include_areas=Y&bitrix_show_mode=configure' like concat(BP1.PAGE, '%')) and (CP1.ID is null or '/index.php?show_sql_stat=Y&finish=&back_url_admin=%2Fbitrix%2Fadmin%2Fsettings.php%3Flang%3Dru%26mid%3Dphotogallery&bitrix_include_areas=Y&bitrix_show_mode=configure' like concat(CP1.PAGE, '%')) and (BA.STAT_ADV_ID is null or BA.STAT_ADV_ID='0') and (BC.COUNTRY_ID is null or BC.COUNTRY_ID='RU') and ( (B.SHOW_USER_GROUP = 'Y' and UG1.GROUP_ID is not null) or (B.SHOW_USER_GROUP 'Y' and UG1.GROUP_ID is null) )
ORDER BY
B.TYPE_SID desc, C.ID desc
+1
bazzzman #
Нет возможности проверить, sql EXPLAIN наверное сказал бы «wht?!» :)
0
phpdude #
виселый битрикс, убъет ваш сервер играючи.

а по существу «ноги в горло» программистам.
0
DMakeev #
У меня в Битриксе была пара запросов, которые на А4 12-м шрифтом не помещались.
Так что перед сдачей проекта приходилось проходиться по всей БД (а структура БД Битрикса это отдельная песня) и расставлять все индексы руками — это хоть как-то спасало. Ну и пару раз пришлось серьезно перекраивать функционал именно потому что Битрикс не делал такую задницу из запросов, что ни в какие ворота.
0
GrandTim #
Ого! Спасибо за пост, могу себе представить, какие расходы у владельцев популярных сайтов на битриксе.

От такого кода даже хабр решил всё курсивом показать.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.