sql >> Databasteknik >  >> RDS >> Mysql

Hur förklarar jag en fråga med parametrar i MySQL

Så länge du bara gör en lika (och inte en like, som kan ha kortslutningseffekter), ersätt det helt enkelt med ett värde:

EXPLAIN SELECT foo FROM bar WHERE some_column = 'foo';

Eftersom den faktiskt inte kör frågan, bör resultaten inte skilja sig från de faktiska. Det finns vissa fall där detta inte är sant (jag nämnde redan LIKE). Här är ett exempel på de olika fallen av LIKE :

SELECT * FROM a WHERE a.foo LIKE ?
  1. Param 1 ==Foo - Kan använda en indexskanning om ett index finns.
  2. Param 1 ==%Foo - Kräver en fullständig tabellskanning, även om ett index finns
  3. Param 1 ==Foo% - Kan använda en indexskanning, beroende på indexets kardinalitet och andra faktorer

Om du går med och where-klausulen ger efter för en omöjlig kombination (och därför kommer den att kortsluta). Till exempel:

SELECT * FROM a JOIN b ON a.id = b.id WHERE a.id = ? AND b.id = ?

Om de första och andra parametrarna är desamma har den en exekveringsplan, och om de är olika kommer den att kortsluta (och returnera 0 rader utan att träffa någon data)...

Det finns andra, men det är allt jag kan komma på i huvudet just nu...



  1. Hur importerar jag en .sql-fil i mysql-databasen med PHP?

  2. Skapa Spark Dataframe från SQL Query

  3. Använder bindningsvariabler med dynamisk SELECT INTO-sats i PL/SQL

  4. Parallella transaktioner i mysql