Domanda

C'è una semplice query che avrebbe preso> 2 sec in modo che io possa provare il registratore query lente?

Cerco qualcosa di simile a un ricorsiva generica o una dichiarazione iterativo.

È stato utile?

Soluzione

Una query semplice potrebbe essere:

SELECT SLEEP(2);

Si vuole iterare esso?

DELIMITER $$
DROP FUNCTION IF EXISTS `iterateSleep` $$
CREATE FUNCTION `iterateSleep` (iterations INT)
RETURNS INT DETERMINISTIC
BEGIN
    DECLARE remainder INT;

    SET remainder = iterations;

    read_loop: LOOP     
        IF remainder=0 THEN
            LEAVE read_loop;
        END IF;

        SELECT SLEEP(2) INTO @test;
        SET remainder = remainder - 1;          
    END LOOP;

    RETURN iterations;
END $$
DELIMITER ;

-- TO TEST IT OUT
mysql> SELECT iterateSleep(2);
+-----------------+
| iterateSleep(2) |
+-----------------+
|               2 |
+-----------------+
1 row in set (4.01 sec)

In alternativa, se si desidera solo per testare la vostra slow_query_log, cambiamento ' long_query_time ' a 0 (per registrare tutte le domande):

SET long_query_time=0;

Altri suggerimenti

Ecco una query piuttosto orribile. Si tratta di un prodotto cartesiano, utilizzando non-ansi stile join.

use master
select * from sys.objects, sys.indexes
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top