Comment optimiser ORDER BY RAND() ?

Comment optimiser ORDER BY RAND() ? - SQL/NoSQL - Programmation

Marsh Posté le 07-12-2017 à 13:54:51    

Bonjour,
 
Voici ma requête :
 

Code :
  1. select var1,var2 from mabase WHERE id='3' ORDER BY clic DESC,RAND() LIMIT 50


 
Donc je veux extraire les 50 premières lignes qui ont le plus de clic avec id=3, ensuite l'ordre doit être aléatoire (parmis les 50 donc).
 
Avec un explain j'ai comme réponse :
 

Code :
  1. Using index condition; Using temporary; Using filesort


 
Ouch  :ouch:  une idée de comment optimiser ma requête ?


Message édité par Stellvia_fr le 07-12-2017 à 13:56:09
Reply

Marsh Posté le 07-12-2017 à 13:54:51   

Reply

Marsh Posté le 07-12-2017 à 16:56:50    

Bon j'ai trouvé la solution, pour ceux qui tombe sur ce topic voici la solution :
 

Code :
  1. SELECT *
  2. FROM (
  3.     VOTRE_REQUETE
  4.     ) AS TOP
  5. ORDER BY RAND()


 
Dans mon cas ca fait :
 

Code :
  1. SELECT *
  2. FROM (
  3.     select var1,var2 from mabase WHERE id='3' ORDER BY clic DESC LIMIT 50
  4.     ) AS TOP
  5. ORDER BY RAND()


 
 
C'est en fait une requete imbriqué dans une seconde qui random les résultat de la première.


Message édité par Stellvia_fr le 07-12-2017 à 16:57:41
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed