sql >> Databasteknik >  >> RDS >> Mysql

Enkel MySQL Subquery Performance

I den första frågan ska mysql välja en delmängd från mdl_enrol tabell och slutför mdl_user_enrolments och mdl_userdata in i minnet. Så du väljer mycket data i minnet. När du har gjort det - ansluter du till data. Om det inte finns tillräckligt med minne för att lägga all data tills den är sammanfogad och skickad tillbaka till klienten - då skapas en tillfällig tabell på hårddisken. Troligtvis är mysql Optimizer inte tillräckligt cool för att fixa ditt misstag och försöka förbättra exekveringsplanen. Det är därför det går långsamt.

För den andra frågan vet mysql exakt vad den behöver välja och väljer bara den lilla mängden nödvändig data. I det här scenariot är det möjligt att använda index (förutsatt att alla nödvändiga index har skapats). Så det går snabbt.




  1. RoleProvider .NET 2 - konverterad från MS Access till MySQL

  2. SQL Server 2008 Anslutningsfel Ingen process finns i andra änden av röret

  3. JDBC VS Hibernate

  4. hur skapar jag en unik php-sida för varje rad i en mysql-databas