sql >> Database teknologi >  >> RDS >> Mysql

Hvorfor returnerer MySQL de samme resultater, mens RAND() bruges i SELECT-sætningen?

Rand()-seed

MySQL bruger systemuret til at seed RAND() når der ikke er nogen anden værdi. Frøværdien er i mikrosekunder, og jeg kan ikke genskabe problemet med RAND() producere den samme værdi to gange, som du beskriver.

Hvis du åbner MySQL Workbench og udfører to sætninger på samme tid. Outputtet er forskelligt for hver.

SELECT RAND();
SELECT RAND();

Når du åbner flere faner og får de samme resultater. Det er sandsynligvis et caching-problem, men du angiver, at du stempler URL'en for at forhindre caching. Så aktiver SQL-logning på serveren og bekræft, at nye forespørgsler kaldes.

Rand()-ydelse

ORDER BY RAND() er langsom, fordi det kræver MySQL at læse hele tabellen. Selv ORDER BY RAND() LIMIT 1 kræver stadig MySQL for at læse hele tabellen.

OPDATERING:

Du kan se, hvad den tilfældige værdi er, som SQL genererer.

$query = "SELECT *, RAND() AS `X`
          FROM customers
          WHERE customer_group='consumables' AND customer_updated < DATE_SUB(NOW(), INTERVAL 1 DAY)
          ORDER BY `X`
          LIMIT 10";

Det vil inkludere kolonnen X for hver række. Den tilfældige værdi, der bruges til at bestille forespørgslen. Tilføj dette til outputtet og se, om hver browser virkelig er returnerer de samme resultatsæt fra MySQL.



  1. SQLite Union

  2. bestille efter .... tal? Hjælp mig med at sortere ip-adresser

  3. Kan PostgreSQL udføre en joinforbindelse mellem to SQL Server-lagrede procedurer?

  4. ændre tabelnavn til store bogstaver