Sono principalmente uno sviluppatore di Actionscript e non è affatto un esperto di SQL, ma di volta in volta devo sviluppare semplici cose da server. Quindi, pensavo di chiedere a persone più esperte la domanda nel titolo.Ha senso utilizzare un indice con una cardinalità bassa?
La mia comprensione è che non si guadagna molto impostando un indice in una colonna che conterrà pochi valori distinti. Ho una colonna che contiene un valore booleano (in realtà è un piccolo int, ma lo sto usando come flag), e questa colonna è usata nelle clausole WHERE della maggior parte delle query che ho. In un caso "medio" teorico, metà dei valori dei record sarà 1 e l'altra metà, 0. Quindi, in questo scenario, il motore del database potrebbe evitare una scansione completa della tabella, ma dovrà comunque leggere un sacco di righe (righe totali/2).
Quindi, dovrei fare di questa colonna un indice?
Per la cronaca, sto usando Mysql 5, ma sono più interessato a una logica generale sul perché non ha senso indicizzare una colonna che so che avrà una bassa cardinalità.
Grazie in anticipo.
Grazie per la risposta. In questo caso, tuttavia, non sto selezionando la colonna. È solo lì per contrassegnare un record come abilitato/disabilitato. Lo sto usando per una cancellazione soft, in pratica. Ecco perché devo usarlo nella clausola WHERE della maggior parte delle query. –