Tengo una tabla con mil millones de filas y me gustaría para determinar el tiempo promedio y la desviación estándar del tiempo para varias consultas de la forma:estadísticas sobre el tiempo de consulta (PostgreSQL)
select * from mytable where col1 = '36e2ae77-43fa-4efa-aece-cd7b8b669043';
select * from mytable where col1 = '4b58c002-bea4-42c9-8f31-06a499cabc51';
select * from mytable where col1 = 'b97242ae-9f6c-4f36-ad12-baee9afae194';
....
tengo mil valores aleatorios para col1 almacenados en otra tabla.
¿Hay alguna manera de almacenar cuánto tiempo tomó cada una de estas consultas (en milisegundos) en una tabla separada, para que pueda ejecutar algunas estadísticas sobre ellas? Algo así como: para cada col1 en mi tabla aleatoria, ejecute la consulta, registre la hora y luego guárdela en otra tabla.
Un enfoque completamente diferente estaría bien, siempre que pueda permanecer dentro de PostgreSQL (es decir, no quiero escribir un programa externo para hacerlo).
¿Hay alguna manera de simplemente generar el tiempo, de modo que no tenga que analizar un archivo? Esto es lo que haré si es necesario, pero parece que debería haber una manera más directa. –
'psql -c" EXPLAIN ANALYZE select * from mytable where col1 ... "| grep "Total runtime" ' –
Realmente estoy buscando una forma de hacer esto completamente en SQL, si es posible. Parece que debería ser capaz de almacenar el tiempo de ejecución que está volviendo en el shell interactivo psql directamente como un valor. Su respuesta es bastante correcta y es lo que he estado pensando hacer si nadie puede darme una respuesta de SQL puro. ¡Gracias por su tiempo! –