Обновить
-14
AxisPod@AxisPod

Пользователь

2
Подписчики
Отправить сообщение
Тормозит жутко.
пиши давай, чтука очень полезная
сейчас увы не скажу, было это достаточно давно, возможно все и было исправлено. Но как в анекдоте: "Осадок то остался" :-(
а если у меня монитор HD Ready 20"
Хостился как то на мастерхосте, через месяц съехал, за это время бд лежала околов 80 часов, и была еще какая-то проблема, сайт в общем был не доступен более 120 часов, тех. поддержка, говорила, что мы решаем проблемы, но они постоянно всплывали.
для перебора необходимо использовать курсор
DECLARE m_cat_id INT;
DECLARE done INT;
DECLARE cur1 CURSOR FOR
SELECT `cat_id` FROM `cat_categ` WHERE `cat_parent_id`=m_info_id
/* стейт сработает, когда из запроса нечего выбирать */
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;

REPEAT
FETCH cur1 INTO m_cat_id;
IF NOT done THEN
/* здесь нужный код, здесь довольно все просто, как и в пхп */
END IF;
UNTIL done END REPEAT;

так как массивов нет, скорее всего нужно создавать временную табличку для накопления, как вариант, можно накидать в строку, если нужен список идентификаторов для IN, но тогда придется динамически формировать запрос, это плохо отражается на производительность, можно сразу обрабатывать данные. Если необходимо расчитанные данные, чтобы потом фетчем вытянуть, то только создание таблички, можно кончно возвращать с помощью SELECT на каждую итерацию, но будет слишком много результатов, что тоже плохо отразится на быстродействии.
Что за кошмарный пример?
Переменные объявляются с помощью ключевого слова DECLARE с указанием типа, а не используются глобальные, это снижает скорость работы.
Динамические запросы не следует использовать, в данном случае можно просто IF в теле запроса использовать, что-то типа
SELECT SQL_CALC_FOUND_ROWS User.* FROM users User
WHERE IF(@firstname != '', User.first_name LIKE CONCAT(@firstname,'%'), 1);
пременные менять не стал.
Может просто Stored Procedure, а не UDF, UDF давно уже есть, вроде с 3-й версии и пишутся он на C, глюков будет ну очень много.
12 ...
127

Информация

В рейтинге
Не участвует
Откуда
Челябинск, Челябинская обл., Россия
Дата рождения
Зарегистрирован
Активность