Soy principalmente un desarrollador de ActionScript y de ninguna manera un experto en SQL, pero de vez en cuando tengo que desarrollar cosas simples del lado del servidor. Entonces, pensé en preguntarle a personas más experimentadas sobre la pregunta en el título.¿Tiene sentido usar un índice que tenga una cardinalidad baja?
Según tengo entendido, no se gana mucho si se establece un índice en una columna que contenga algunos valores distintos. Tengo una columna que contiene un valor booleano (en realidad es un int pequeño, pero lo estoy usando como un indicador), y esta columna se utiliza en las cláusulas WHERE de la mayoría de las consultas que tengo. En un caso "promedio" teórico, la mitad de los valores de los registros será 1 y la otra mitad, 0. Entonces, en este escenario, el motor de base de datos podría evitar un escaneo completo de tabla, pero tendrá que leer muchas filas de todos modos (filas totales/2).
Entonces, ¿debería hacer de esta columna un índice?
Para el registro, estoy usando Mysql 5, pero estoy más interesado en un razonamiento general sobre por qué tiene/no tiene sentido indexar una columna que sé que tendrá una cardinalidad baja.
Gracias de antemano.
Gracias por su respuesta. En este caso, no estoy ordenando esa columna. Está solo allí para marcar un registro como habilitado/deshabilitado. Lo estoy usando para borrado suave, básicamente. Es por eso que tengo que usarlo en la cláusula WHERE de la mayoría de las consultas. –