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

SQL:Hvad er standardrækkefølgen for forespørgsler?

Der er ingen sådan ordre til stede. Taget fra http://forums.mysql.com/read .php?21,239471,239688#msg-239688

  • Vær ikke afhængig af ordre, når ORDER BY mangler.

  • Angiv altid ORDER BY, hvis du ønsker en bestemt bestilling - i nogle situationer kan motoren eliminere ORDER BY på grund af, hvordan den udfører et andet trin.

  • GRUPPER EFTER fremtvinger BESTIL EFTER. (Dette er en overtrædelse af standarden. Det kan undgås ved at bruge ORDER BY NULL.)

SELECT * FROM tbl -- dette vil lave en "tabelscanning". Hvis tabellen aldrig har haft SLETTER/ERSTATNINGER/OPDATERINGER, vil posterne tilfældigvis være indsættelsesrækkefølgen, deraf det, du har observeret.

Hvis du havde lavet den samme sætning med en InnoDB-tabel, ville de være blevet leveret i PRIMARY KEY-rækkefølge, ikke INSERT-rækkefølge. Igen, dette er en artefakt af den underliggende implementering, ikke noget at være afhængig af.



  1. Sjovt med (columnstore) komprimering på et meget stort bord – del 3

  2. Indsamlingsmetode:SLET-procedure i Oracle-databasen

  3. Hvordan slipper jeg SQL-standardbegrænsning uden at kende navnet?

  4. Oracle REGEXP_LIKE og ordgrænser