sql >> Database >  >> RDS >> Mysql

Deze SELECT-query duurt 180 seconden om te voltooien

(Mijn reactie als antwoord plaatsen omdat het blijkbaar een verschil heeft gemaakt!)

Als iemand dit verder wil onderzoeken, ik heb zojuist een test gedaan en vond het heel gemakkelijk te reproduceren.

Tabel maken

CREATE TABLE `filler` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`)
) 

Procedure aanmaken

CREATE PROCEDURE `prc_filler`(cnt INT)
BEGIN
        DECLARE _cnt INT;
        SET _cnt = 1;
        WHILE _cnt <= cnt DO
                INSERT
                INTO    filler
                SELECT  _cnt;
                SET _cnt = _cnt + 1;
        END WHILE;
END

Tabel invullen

  call prc_filler(5000)

Vraag 1

SELECT id 
FROM filler 
WHERE id =  (SELECT MAX(id) FROM filler  WHERE id =   
 ( SELECT MIN(id) 
    FROM filler
    WHERE id between 2000 and 3000
    )
  )

Equals Explain Output http://img689.imageshack.us/img689/5592/equals. png

Vraag 2 (zelfde probleem)

SELECT id 
FROM filler 
WHERE id in  (SELECT MAX(id) FROM filler  WHERE id in   
 ( SELECT MIN(id) 
    FROM filler
    WHERE id between 2000 and 3000
    )
  )

In Explain Output http://img291.imageshack.us/img291/8129/52037513. png



  1. Een receptendatabase ontwerpen die zowel ingrediënten als subrecepten moet bevatten

  2. CSV importeren naar MySQL

  3. Is er ANY_VALUE mogelijkheid voor mysql 5.6?

  4. Niet tevredenLinkError in native methode