Si no tiene absolutamente ningún dato sobre su problema, se ve obligado a hacer una estimación.
La forma general de esa fórmula se explica en los comentarios:
- si usamos solo una columna clave (
x
) de un índice de varias columnas (conc
columnas), obtenemosa
filas (1% del total de filas). Así que parax=1
, el resultado esa
por definición. - si conocemos el valor de cada columna clave de un índice de varias columnas, obtenemos el número de filas por clave completa (
b
); entonces parax=c
, obtenemosb
filas (que es 1 o 10 ) por definición. - en el medio (si usamos valores clave para más de una columna clave, pero no para todas), para cada valor clave conocido adicional, podemos excluir algunas filas adicionales:tenemos
a-b
filas que no pertenecerán al caso donde conocemos nuestro completo clave (que tendríab
filas) y, por definición, se excluirán proporcionalmente a la proporción de columnas clave utilizables ((x-1)/(c-1)
). - El
-1
en(x-1)/(c-1)
es solo un cambio (podría usar diferentes nombres de variables), ya que solo necesitamos contar los adicionales columnas, peroc
yx
es el recuento que incluye la primera columna. (En una serie temporal, llamaría al parámetro de la primera columnat=0
y el-1
hace exactamente eso).
Entonces, en conclusión, obtenemos a - (a-b) * (x-1)/(c-1)
(a
para la primera columna clave menos las filas que excluimos proporcionalmente). Esta es (si transformas un poco esa expresión) exactamente la fórmula dada. Una comprobación rápida de cordura:para x=1
(x-1=0
), el segundo término es 0 y obtenemos a
, tal como se define en la primera condición; para x=c
, obtenemos a-(a-b)=b
como se define en la segunda condición.
No es irrazonable hacer este ansatz usando estas suposiciones, pero probablemente puedas encontrar una fórmula diferente que tenga tanto sentido. Sin embargo, argumentar que es mejor sería una tarea más difícil.
Luego está la cuestión de elegir los valores (b=10
y 1%
en este caso). Obviamente, puede elegir cualquier valor. Para hacer esto sin datos confiables excepto una intuición, existe un concepto llamado estimación de Fermi :
Básicamente, elige solo el orden de magnitud (1, 1000000, 1/100) para sus parámetros de entrada y obtiene un orden de magnitud razonable para su resultado.
Entonces, ¿cuántas filas espera que cubra una clave no única? Es más de 1, de lo contrario, la convertiría en una clave única, pero ¿es más como 2, 10 o 100? 10 es probablemente una buena suposición (cubre un valor de aproximadamente 3 a 30 en esa estimación). Entonces, aunque estos números podrían provenir de una encuesta mundial de 2 años sobre la distribución de claves, los valores estimados en potencias de 10 generalmente se derivan de esa manera. Si quiere estar absolutamente seguro, pregunte al desarrollador.
Y el xkcd obligatorio para este tipo de temas:What-if? Pintar la tierra