Me gustaría saber el rendimiento de este índice:índice en la columna con sólo 2 valores distintos
tengo una varchar "no válido" (1) columna que tiene 2 valores: NULL o 'Y' tengo una index on (inválido), así como (inválido, last_validado) Last_validated is datetime (esto se usa para una consulta SELECT no relacionada)
Estoy marcando una pequeña cantidad de elementos (1-5%) de las filas en la tabla con esto como 'a eliminar'.
Esto es así cuando me
DELETE FROM items WHERE invalid='Y'
que no realiza un escaneo completo de tabla para los elementos no válidos.
Parece que hay un problema, el DELETE real es ahora bastante lento, posiblemente porque todos los índices se eliminan a medida que se eliminan.
¿Un índice de mapa de bits proporcionaría un mejor rendimiento para esto? o tal vez no hay índice en absoluto?
Lógicamente, estoy de acuerdo con su punto n. ° 1; en la práctica, sin embargo, hay * en algunos casos * beneficios de rendimiento significativos para representar valores poco interesantes como NULL en una columna debido a que Oracle no almacena filas nulas en índices, si las consultas en esa columna casi siempre solo están interesadas en los raros valores 'Y', entonces no tener' 'Y' representado como NULL puede tener un gran impacto en el rendimiento de las consultas, actualizaciones y eliminaciones. –
[Este artículo] (https://richardfoote.wordpress.com/2011/08/10/indexing-a-column-with-just-one-distinct-value-all-the-madmen/) confirma con más detalle @ Declaración de JeffreyKemp. – GolezTrol