Mysql хранимых процедур динамических запросов - PullRequest
0 голосов
/ 09 июля 2010

У меня было довольно много проблем, и я знаю, что могу получить хорошие ответы здесь!

Хорошо, вроде 2 вопроса.
Часть 1 Я делаю действительно большое обновление данных, в основном изменяя таблицы. поэтому вопрос заключается в том, должен ли я использовать хранимую процедуру mysql или mysql / php, как обычно. Я в настоящее время нахожусь на хранящемся настроении производства. Причины

  • а) Быстрее
  • б) Нет таймаутов.

Если у кого-то есть другие мнения, дайте мне знать.

P.S мы говорим о большой куче данных. НРАВИТСЯ более 1,5 миллионов строк

2-я часть.
В хранимых процедурах, как сделать запрос, который будет возвращать только одну строку, просто дать мне эту строку. Кроме того, запрос немного динамический, например

SET tag_query = concat('SELECT tag_id FROM tags WHERE tag = "',split_string_temp,'"');

Есть какие-нибудь подсказки?
Кажется, я не могу найти ничего легкого в этом языке!

Заранее спасибо за помощь.

Richard

Ответы [ 2 ]

0 голосов
/ 09 июля 2010

Чтобы обновить данные один раз (не как обычную задачу), я бы предпочел использовать администратор графического интерфейса, такой как phpmyadmin или sqlyog, для непосредственного выполнения команд SQL (с хорошей резервной копией, конечно!), Так как вы можете видеть результаты быстро и не нужно беспокоиться о чем-то кроме вашей основной задачи.

0 голосов
/ 09 июля 2010

Ваш вопрос немного расплывчатый, поэтому я просто отвечу на один фрагмент кода, который вы включили.

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

Примерно так:

DELIMITER $$

DROP FUNCTION IF EXISTS GET_TAG_ID $$

CREATE FUNCTION GET_TAG_ID(P_TAG_NAME varchar(255)) RETURNS int
BEGIN
  DECLARE v_return_val INT;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_return_val = -1;

  IF (P_TAG_NAME IS NULL)
  THEN
    RETURN NULL;
  END IF;

  select tag_id
  into v_return_val
  from TAGS
  where tag = P_TAG_NAME;

  RETURN v_return_val;
END $$

DELIMITER ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...