Tengo la siguiente tabla simple que contiene datos de medición de tráfico:muy lento mapa de bits montón escanear en Postgres
CREATE TABLE "TrafficData"
(
"RoadID" character varying NOT NULL,
"DateID" numeric NOT NULL,
"ExactDateTime" timestamp NOT NULL,
"CarsSpeed" numeric NOT NULL,
"CarsCount" numeric NOT NULL
)
CREATE INDEX "RoadDate_Idx" ON "TrafficData" USING btree ("RoadID", "DateID");
La columna RoadID identifica de forma exclusiva el camino cuyos datos se está grabando, mientras DateId identifica el día del año (1..365) de los datos, básicamente una representación redondeada de ExactDateTime.
Tengo alrededor de 100.000.000 filas; hay 1.000 valores distintos en la columna "RoadID" y 365 valores distintos en la columna "DateID".
Luego ejecutar la siguiente consulta:
SELECT * FROM "TrafficData"
WHERE "RoadID"='Station_1'
AND "DateID">20100610 AND "DateID"<20100618;
Esta toma hasta tres segundos alucinantes para terminar, y no puedo por la vida de a averiguar por qué.
EXPLAIN ANALYZE me da el siguiente resultado:
Bitmap Heap Scan on "TrafficData" (cost=104.84..9743.06 rows=2496 width=47) (actual time=35.112..2162.404 rows=2016 loops=1)
Recheck Cond: ((("RoadID")::text = 'Station_1'::text) AND ("DateID" > 20100610::numeric) AND ("DateID" < 20100618::numeric))
-> Bitmap Index Scan on "RoadDate_Idx" (cost=0.00..104.22 rows=2496 width=0) (actual time=1.637..1.637 rows=2016 loops=1)
Index Cond: ((("RoadID")::text = 'Station_1'::text) AND ("DateID" > 20100610::numeric) AND ("DateID" < 20100618::numeric))
Total runtime: 2163.985 ms
Mis especificaciones:
- de Windows 7
- Postgres 9.0
- 4 GB de RAM
que había mucho apreciar cualquier poin útil ters!
Esta no es la tabla que está utilizando, no hay una columna "StationId". –
Ah, cierto; gracias por señalar eso. StationID == RoadID. Mi error. Cambié el nombre de la columna en la definición de la tabla para hacer que los contenidos fueran más intuitivos, pero no cambié el nombre en la definición de la consulta y la salida de la consulta. Actualicé la pregunta para incluir el nombre correcto de la columna. – TroutKing
¿Tiene una aspiradora en funcionamiento o la ha desactivado? –