Su primera propuesta introduce conflicto en el nivel de valor previo al hash.
por ejemplo, para el usuario con id 3:
1. sha1 (1 * 4) = sha1 (4) -> supongamos aquí que sha (4) da el resultado más pequeño
2. sha1 (1 * 2) = sha1 (2) -> supongamos aquí que sha (2) da el segundo resultado más pequeño
3. sha1 (1 * 1) = sha1 (1)
4. sha1 (1 * 3) = sha1 (3)
5. sha1 (1 * 5) = sha1 (5)
para usuario con id 2:
1. sha1 (2 * 2) = sha1 (4) -> supongamos aquí que sha (4) da el resultado más pequeño
2. sha1 (2 * 1) = sha1 (2) -> supongamos aquí que sha (2) da el segundo más pequeño
3. sha1 (2 * 3) = sha1 (6)
4. sha1 (2 * 4) = sha1 (8)
5. sha1 (2 * 5) = sha1 (10)
En el ejemplo anterior, puede ver que si se les da a los usuarios con los identificadores 1 y 2, podría contar en las estadísticas 2 filas dos veces.
- Cómo resolver rápidamente cualquier problema
- Para ser programador, ¿es necesario saber matemáticas?
- ¿Por qué se acepta la tesis de Church-Turing? Tengo problemas para concebir un programa para una máquina de Turing que sume dos números arbitrariamente grandes.
- ¿Cuál es la relevancia de la computación cuántica para el problema NP = P?
- ¿Cuál es la mejor descripción del cálculo lambda?
Te recomendaría que uses algo como esto:
ORDER BY sha1 (lpad (to_char (user_id), 10, ‘0’) || lpad (to_char (record_id), 10, ‘0’))
¿Por qué no tener siempre un valor único dentro de la función hash?