sql >> Database >  >> RDS >> Mysql

Eenvoudige MySQL-subqueryprestaties

In de eerste query moet mysql een subset selecteren uit mdl_enrol tabel en voltooi mdl_user_enrolments en mdl_userdata in het geheugen. Je selecteert dus veel data in het geheugen. Nadat u dat hebt gedaan, voegt u zich bij de gegevens. Als er niet genoeg geheugen is om alle gegevens op te slaan totdat deze zijn samengevoegd en teruggestuurd naar de client, wordt een tijdelijke tabel op de harde schijf gemaakt. Hoogstwaarschijnlijk is mysql-optimizer niet cool genoeg om uw fout te herstellen en het uitvoeringsplan te verbeteren. Daarom is het traag.

Terwijl voor de tweede query mysql weet wat het precies moet selecteren en alleen de kleine hoeveelheid vereiste gegevens selecteert. In dit scenario is het mogelijk om indexen te gebruiken (ervan uitgaande dat alle benodigde indexen zijn aangemaakt). Het is dus snel.




  1. Laatste record in elke groep ophalen uit database - SQL Server 2005/2008

  2. Oracle externe sleutel

  3. Werken met MySQL TIMESTAMP-kolommen in SQL Server

  4. Hoe kan ik initcap-functionaliteit in MySQL bereiken?