Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Результаты запроса в хранимой процедуре
 
 автор: Meh   (14.10.2009 в 22:33)   письмо автору
 
 

Господа, застрял.

Есть хранимая процедура, которая по заданным в ней формулам (очень большим) вычисляет из входящих параметров и полей таблицы значения X, Y и Z. Для примера что-то типа:

CREATE PROCEDURE `my_proc`(IN v_id INT, IN v_a INT, IN v_b INT, IN v_c INT)
BEGIN
  SELECT (v_a - v_b)*(`var1` - `var2`) as `X`,
         (v_a - v_c)*(`var3` - `var4`) as `Y`,
         (v_b - v_c)*(`var5` - `var6`) as `Z`,
  FROM `table1` WHERE `id` = v_id;
END;

Процедура вызывается из триггера в команде UPDATE и в неё передаются старые и новые значения.
Вызвав процедуру CALL `my_proc`(834, 1, 2, 3) получаем прекрасные результаты расчёта в виде таблицы:

   X    Y    Z
 -17   28   45
   8   -1    0
  41    2   40 и т.п.

Но задача состоит в том, чтоб дальше обрабатывать эту таблицу. Т.е. нужно дальше получить количество значений < 0, > 0, сумму и т.п.

SELECT * FROM CALL `my_proc`(834, 1, 2, 3) использовать нельзя.

Создание из запроса временной таблицы типа
CREATE TEMPORARY TABLE `temp1`
SELECT ...
очень сильно снижает производительность. Время выполнения запроса без временной таблицы = 0.0030 ~ 0.0050 с, а с её созданием - 0.15 ~ 0.17 с.
Таких запросов будет ОЧЕНЬ МНОГО (задача нахождения пересечения большого множества отрезков).

Подскажите каким путём можно "дёшево" обрабатывать полученную таблицу.
Может я неправильно использую процедуру или не так создаю временную таблицу?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования