Pour les tests, est-il possible d'exécuter une boucle à partir de MySQL Workbench ou d'un outil similaire? J'ai essayé mais j'ai eu une erreur.
Si cela est possible, veuillez fournir un exemple simple que je peux exécuter.
Vous ne pouvez pas faire de boucle for dans un éditeur SQL sans procédure stockée. J'utilise TOAD pour MySQL .
Une procédure stockée rapide devrait faire l'affaire:
DELIMITER $$
DROP PROCEDURE IF EXISTS proc_loop_test$$
CREATE PROCEDURE proc_loop_test()
BEGIN
DECLARE int_val INT DEFAULT 0;
test_loop : LOOP
IF (int_val = 10) THEN
LEAVE test_loop;
END IF;
SET int_val = int_val +1;
SELECT int_val;
END LOOP;
END$$
DELIMITER ;
Il y a une astuce avec des cas d'utilisation limités qui est "semblable à une boucle".
Je voulais créer un grand tableau de lignes (1 ~ 2 millions) de nombres entiers aléatoires pour un test:
INSERT INTO test_table (num) VALUES(ROUND(Rand() * 1E6));
-- calling this will insert once for every row in test_table
INSERT INTO test_table (num)
SELECT ROUND(Rand() * 1E6)
FROM test_table;
Alors, j'ai rapidement continué à doubler le nombre de lignes jusqu'à obtenir ce dont j'avais besoin.
Si vous voulez uniquement bloquer le thread actuel, utilisez select sleep(seconds);
, sinon vous pouvez utiliser une procédure stockée (si vous souhaitez effectuer une boucle) ou une fonction UDF (définie par l'utilisateur).
Si vous avez déjà une table arbitraire myOldTable suffisamment longue, vous pouvez utiliser le truc suivant:
set @counter = 0;
select (@counter := @counter+1), @counter*@counter from myOldTable limit 1000;