sql >> Base de Datos >  >> RDS >> Mysql

Pregunta de mejores prácticas para MySQL:¿ordenar por id o fecha?

Si hay hay Es probable que agregue dos con la misma fecha, probablemente necesitará:

SELECT balance FROM my_table ORDER BY date_added DESC,id DESC LIMIT 1;

(observe la cláusula 'descendente' en ambos campos).

Sin embargo, deberá tener en cuenta lo que desea que suceda cuando alguien agregue un asiento de ajuste del 2 de febrero al que se le asigna la fecha del 31 de enero para asegurarse de que el mes de enero esté completo. Tendrá un DNI superior a los realizados el 1 de febrero.

En general, los sistemas de contabilidad solo funcionan en la fecha. Tal vez si pudiera decirnos por qué el orden es importante, podríamos hacer otras sugerencias.

En respuesta a su comentario:

Proporcionaría algunos consejos:esto es todo lo que se me ocurre de inmediato, por lo general explico muchos más "consejos" con incluso menos aliento :-) Los dos primeros, más relacionados con la base de datos que con la contabilidad, son:

Primero, haz todo en tercera forma normal y solo revierte si tiene problemas de rendimiento. Esto le ahorrará mucha angustia con datos duplicados que pueden salirse de sintonía. Incluso si revierte, use disparadores y otras capacidades de DBMS para asegurarse de que los datos no pierdan el paso.

Un ejemplo, si desea acelerar sus búsquedas en una columna last_name, puede crear una columna upper_last_name (indexada) y luego usarla para ubicar registros que coincidan con su término de búsqueda ya en mayúsculas. Esto casi siempre será más rápido que la función por fila upper(last_name) . Puede usar un disparador de inserción/actualización para asegurarse de que upper_last_name siempre esté configurado correctamente y esto incurre en el costo solo cuando cambia el nombre, no cada vez que realiza una búsqueda.

En segundo lugar, no duplique datos ni siquiera entre tablas (como su esquema actual) a menos que pueda usar esos mismos trucos de tipo activador para garantizar que los datos no se desajusten. ¿Qué hará su cliente cuando le envíe una factura en la que el saldo final no coincida con el saldo inicial más las compras? Eso no hará que su empresa se vea muy profesional :-)

En tercer lugar (y esto está más relacionado con la contabilidad), generalmente no necesita preocuparse por la cantidad de transacciones al calcular los saldos sobre la marcha. Esto se debe a que los sistemas de contabilidad suelen tener una función de renovación al final del año que restablece los saldos de apertura.

Por lo tanto, por lo general, nunca tendrá que procesar más de un año de datos a la vez, lo que, a menos que sea el gobierno de EE. UU. o Microsoft, no es tan oneroso.