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

Come interrogare questa tabella MySQL nel modo più performante?

Dovrai eseguire una scansione completa della tabella, quindi questa è probabilmente la soluzione migliore:

select (case when id in (< your list >) then 'in' else 'out' end) as inlist,
       my_boolean_field, count(*)
from mytable t
group by (case when id in (< your list >) then 'in' else out' end),
         my_boolean_field;

Se la tua lista è in una tabella con un indice, puoi usare un left join su di essa. Tuttavia, MySQL ottimizza le ricerche per in con valori costanti (usa una ricerca binaria). Quindi è probabile che questo sia il metodo più veloce.