Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

почему-то на хостинге виснет mysql-сервер от одного запроса

00 голосов
9
Всем привет!

На хостинге заблокировали аккаунт, из-за того, что мол у них сервер встал после выполнения моего запроса. Этот запрос идет, на сколько я понимаю после поиска фильтром по всем свойствам товаров в каталоге.

Код
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) INNER JOIN b_iblock_property FP1 ON
FP1.IBLOCK_ID=B.ID AND FP1.CODE='code2' INNER JOIN b_iblock_element_property
FPV1 ON FP1.ID=FPV1.IBLOCK_PROPERTY_ID AND FPV1.IBLOCK_ELEMENT_ID=BE.ID INNER
JOIN b_iblock_property FP2 ON FP2.IBLOCK_ID=B.ID AND FP2.CODE='code3' INNER
JOIN b_iblock_element_property FPV2 ON FP2.ID=FPV2.IBLOCK_PROPERTY_ID AND
FPV2.IBLOCK_ELEMENT_ID=BE.ID INNER JOIN b_iblock_property FP3 ON
FP3.IBLOCK_ID=B.ID AND FP3.CODE='code4' INNER JOIN b_iblock_element_property
FPV3 ON FP3.ID=FPV3.IBLOCK_PROPERTY_ID AND FPV3.IBLOCK_ELEMENT_ID=BE.ID INNER
JOIN b_iblock_property FP4 ON FP4.IBLOCK_ID=B.ID AND FP4.CODE='code5' INNER
JOIN b_iblock_element_property FPV4 ON FP4.ID=FPV4.IBLOCK_PROPERTY_ID AND
FPV4.IBLOCK_ELEMENT_ID=BE.ID INNER JOIN b_iblock_property FP5 ON
FP5.IBLOCK_ID=B.ID AND FP5.CODE='code7' INNER JOIN b_iblock_element_property
FPV5 ON FP5.ID=FPV5.IBLOCK_PROPERTY_ID AND FPV5.IBLOCK_ELEMENT_ID=BE.ID INNER
JOIN b_iblock_property FP6 ON FP6.IBLOCK_ID=B.ID AND FP6.CODE='code9' INNER
JOIN b_iblock_element_property FPV6 ON FP6.ID=FPV6.IBLOCK_PROPERTY_ID AND
FPV6.IBLOCK_ELEMENT_ID=BE.ID INNER JOIN b_iblock_property FP7 ON
FP7.IBLOCK_ID=B.ID AND FP7.CODE='code12' INNER JOIN b_iblock_element_property
FPV7 ON FP7.ID=FPV7.IBLOCK_PROPERTY_ID AND FPV7.IBLOCK_ELEMENT_ID=BE.ID INNER
JOIN b_iblock_property FP8 ON FP8.IBLOCK_ID=B.ID AND FP8.CODE='code15' INNER
JOIN b_iblock_element_property FPV8 ON FP8.ID=FPV8.IBLOCK_PROPERTY_ID AND
FPV8.IBLOCK_ELEMENT_ID=BE.ID INNER JOIN b_iblock_property FP9 ON
FP9.IBLOCK_ID=B.ID AND FP9.CODE='code16' INNER JOIN b_iblock_element_property
FPV9 ON FP9.ID=FPV9.IBLOCK_PROPERTY_ID AND FPV9.IBLOCK_ELEMENT_ID=BE.ID INNER
JOIN b_iblock_property FP10 ON FP10.IBLOCK_ID=B.ID AND FP10.CODE='code18'
INNER JOIN b_iblock_element_property FPV10 ON FP10.ID=FPV10.IBLOCK_PROPERTY_ID
AND FPV10.IBLOCK_ELEMENT_ID=BE.ID INNER JOIN b_iblock_property FP11 ON
FP11.IBLOCK_ID=B.ID AND FP11.CODE='code23' INNER JOIN
b_iblock_element_property FPV11 ON FP11.ID=FPV11.IBLOCK_PROPERTY_ID AND
FPV11.IBLOCK_ELEMENT_ID=BE.ID INNER JOIN b_iblock_property FP12 ON
FP12.IBLOCK_ID=B.ID AND FP12.CODE='code26' INNER JOIN
b_iblock_element_property FPV12 ON FP12.ID=FPV12.IBLOCK_PROPERTY_ID AND
FPV12.IBLOCK_ELEMENT_ID=BE.ID INNER JOIN b_iblock_property FP13 ON
FP13.IBLOCK_ID=B.ID AND FP13.CODE='code27' INNER JOIN
b_iblock_element_property FPV13 ON FP13.ID=FPV13.IBLOCK_PROPERTY_ID AND
FPV13.IBLOCK_ELEMENT_ID=BE.ID INNER JOIN b_iblock_property FP14 ON
FP14.IBLOCK_ID=B.ID AND FP14.CODE='code32' INNER JOIN
b_iblock_element_property FPV14 ON FP14.ID=FPV14.IBLOCK_PROPERTY_ID AND
FPV14.IBLOCK_ELEMENT_ID=BE.ID INNER JOIN b_iblock_property FP15 ON
FP15.IBLOCK_ID=B.ID AND FP15.CODE='code34' INNER JOIN
b_iblock_element_property FPV15 ON FP15.ID=FPV15.IBLOCK_PROPERTY_ID AND
FPV15.IBLOCK_ELEMENT_ID=BE.ID WHERE 1=1 AND B.ID IN (0,42) AND (
(BE.WF_STATUS_ID=1 AND BE.WF_PARENT_ELEMENT_ID IS NULL) ) AND ((((
(upper(BE.NAME) like upper('%acer7730G%') and BE.NAME is not null) )))) AND
(((( (upper(FPV1.VALUE) like upper('%Intel%') and FPV1.VALUE is not null) AND
(upper(FPV1.VALUE) like upper('%Core2Duo%') and FPV1.VALUE is not null) AND
(upper(FPV1.VALUE) like upper('%T5850%') and FPV1.VALUE is not null) AND
(upper(FPV1.VALUE) like upper('%2.16GHz%') and FPV1.VALUE is not null) ))))
AND (((( (upper(FPV2.VALUE) like upper('%4096Mb%') and FPV2.VALUE is not null)
AND ( (upper(FPV2.VALUE) like upper('%4Gb%') and FPV2.VALUE is not null) ) AND
(upper(FPV2.VALUE) like upper('%DDRII%') and FPV2.VALUE is not null) )))) AND
(((( (upper(FPV3.VALUE) like upper('%2x320Gb%') and FPV3.VALUE is not null)
AND (upper(FPV3.VALUE) like upper('%5400rpm%') and FPV3.VALUE is not null) AND
(upper(FPV3.VALUE) like upper('%SATA%') and FPV3.VALUE is not null) )))) AND
(((( (upper(FPV4.VALUE) like upper('%17%') and FPV4.VALUE is not null) ))))
AND (((( (upper(FPV5.VALUE) like upper('%??%') and FPV5.VALUE is not null)
)))) AND (((( (upper(FPV6.VALUE) like upper('%64Mb%') and FPV6.VALUE is not
null) AND ( (upper(FPV6.VALUE) like upper('%??%') and FPV6.VALUE is not null)
AND (upper(FPV6.VALUE) like upper('%958Mb%') and FPV6.VALUE is not null) )))))
AND (((( (upper(FPV7.VALUE) like upper('%??%') and FPV7.VALUE is not null)
)))) AND (((( (upper(FPV8.VALUE) like upper('%Bluetooth%') and FPV8.VALUE is
not null) AND (upper(FPV8.VALUE) like upper('%V2.0%') and FPV8.VALUE is not
null) AND (upper(FPV8.VALUE) like upper('%EDR%') and FPV8.VALUE is not null)
)))) AND (((( (upper(FPV9.VALUE) like upper('%4%') and FPV9.VALUE is not null)
)))) AND (((( (upper(FPV10.VALUE) like upper('%??%') and FPV10.VALUE is not
null) )))) AND (((( (upper(FPV11.VALUE) like upper('%??%') and FPV11.VALUE is
not null) )))) AND (((( (upper(FPV12.VALUE) like upper('%??%') and FPV12.VALUE
is not null) )))) AND (((( (upper(FPV13.VALUE) like upper('%WebCam%') and
FPV13.VALUE is not null) AND (upper(FPV13.VALUE) like upper('%1,3Mpx%') and
FPV13.VALUE is not null) )))) AND (((( (upper(FPV14.VALUE) like
upper('%?????%') and FPV14.VALUE is not null) )))) AND ((((
(upper(FPV15.VALUE) like upper('%12%') and FPV15.VALUE is not null) AND
(upper(FPV15.VALUE) like upper('%???????%') and FPV15.VALUE is not null) ))))
AND ((((BE.IBLOCK_ID = '42')))) 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 = 224)) ORDER BY BE.SORT asc , BE.ID desc
LIMIT 0, 30


Гоняла этот запрос на своей базе - всё окей. Выполнился за 0.01 сек. Не мудрено что он должен подтормаживать, ведь поиск идет по большому количеству таблиц с применением команды "like", которая сама по себе медленно работает. Но почему же все-таки у них сервер валится на этом запросе!?

Либо, может, надо какие-то доп настройки пропиать в битриксе, чтобы нагрузка при таком запросе на их сервер была бы не критична!?
спросил 05 Май, 13 от Juris (160 баллов)

9 Ответы

00 голосов
Потому что хостер кривой. Меняйте на адекватного.
ответил 05 Май, 13 от bazzet (620 баллов)
00 голосов
Возможно, что в данном случае использование Инфоблоков 2.0 будет выгоднее. Тогда вместо многократного INNER JOIN будет выборка из одной таблицы со значениями свойств.

Тип инфоблока переключается в настройках инфоблока. Возможно, потребуется изменение кода, используемого для работы с этим инфоблоком.
ответил 06 Май, 13 от Ixie (540 баллов)
00 голосов
Спасибо, Вадим, за совет! А где именно делается вот это:
Цитата
Тип инфоблока переключается в настройках инфоблока.
, что-то не нашла я пока этого. Это именно в настройках битрикса (модуль инфоблок настраивается) или надо настраивать конкретный инфоблок?
ответил 07 Июль, 13 от Juris (160 баллов)
00 голосов
Конкретный инфоблок.
ответил 11 Окт, 13 от Ixie (540 баллов)
00 голосов
ответил 11 Янв, 14 от Merigold (460 баллов)
00 голосов
Всем привет!

Появилась острая необходимость переделать все-таки сайт, чтобы запросы были компактными. Но так и не нашла где в настройках инфоблока можно проставить ему версию 2.0 Где же это все-таки делается?

Помогите пожалуйста!

Спасибо!
ответил 29 Апр, 14 от Juris (160 баллов)
00 голосов
В админке "Типы информ. блоков", выбираете нужный ИБ, заходите в его редактирование и меняете "Значения свойств хранятся:" на "в отдельной таблице для данного информационного блока"
ответил 25 Авг, 14 от Almarea (3,760 баллов)
00 голосов
Спасибо, нашла и сделала как вы говорили! Действительно, создалась в БД табличка, в которой теперь хранятся все свойства, но вот фильтр все равно делает запрос из всех таблиц. Можно ли как-то ему указать на эту табличку со свойствами? Или же придется вручную писать запрос?
ответил 31 Дек, 14 от Juris (160 баллов)
00 голосов
Может быть переиндексация исправит положение?
ответил 19 Апр, 15 от Almarea (3,760 баллов)

Похожие вопросы

0 голосов
1 ответ
спросил 11 Авг, 14 от Keh192 (300 баллов)
0 голосов
2 ответов
0 голосов
2 ответов
0 голосов
1 ответ
+1 голос
7 ответов