cómo realizar horas de operación consultas en postgresql
complejidad de consulta original
la consulta original, previsto a identificar registros que están "abiertos" (dentro de las horas especificadas de las operaciones), fue complejo de complejos de operaciones), se necesita compleja de complejos). Donde las horas de operación pueden envolver alrededor del final de la semana. Para simplificar este proceso, adoptaremos un enfoque diferente utilizando una estructura de datos llamada tsrange .
que introduce tsrange
tsRange es un tipo de datos postgresql que representa un rango de timestamentos sin zona horaria. Proporciona una forma conveniente de almacenar y manipular intervalos de tiempo.
rediseñando la estructura de la tabla
reemplazaremos las columnas existentes (OpenS_on, Closes_on, OpenS_AT, Closes) con una sola columna llamada Horas de Type Tsrange. Horas de operación se almacenarán como un conjunto de valores TSRANGE.
Ejemplo
, por ejemplo, el siguiente valor de tsrange representa horas de operación desde el miércoles, 6 pm a jueves, 5 am:
'[1996-01-03 18:30, 1996-01-01-04 05:00] ''[1996-01-03 18:30, 1996-01-04 05:00]'
consulta usando tsrange
Con la estructura de tabla actualizada, la consulta se vuelve mucho más simple:select * De Hoo Donde horas @& gt; f_hoo_time (ahora ())
'[1996-01-03 18:30, 1996-01-04 05:00]'La función f_hoo_time () convierte una marca de tiempo con zona horaria en una marca de tiempo, mientras que el operador de contención (@>) verifica si la hora actual cae dentro del rango de tiempo especificado.
Índice y rendimiento
a optimizados Recomendar crear un índice SP-GIST en la columna Horas. Este índice permite una búsqueda eficiente de rangos de tiempo, lo que resulta en un rendimiento de consulta más rápido.
conclusión
aprovechando TSRANGE y un índice SP-Chist, podemos simplificar en gran medida las horas de consulta de operación y mejorar su rendimiento. Este enfoque es más eficiente y robusto que la consulta original.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3