Tôi cần giá trị thấp nhất cho runnerId
.Hiệu suất hàm Postgres min
truy vấn này:
SELECT "runnerId" FROM betlog WHERE "marketId" = '107416794' ;
mất 80 ms (1968 hàng kết quả).
này:
SELECT min("runnerId") FROM betlog WHERE "marketId" = '107416794' ;
mất 1.600 ms.
Có cách nào nhanh hơn để tìm mức tối thiểu hay tôi nên tính toán số phút trong chương trình java của mình?
"Result (cost=100.88..100.89 rows=1 width=0)"
" InitPlan 1 (returns $0)"
" -> Limit (cost=0.00..100.88 rows=1 width=9)"
" -> Index Scan using runneridindex on betlog (cost=0.00..410066.33 rows=4065 width=9)"
" Index Cond: ("runnerId" IS NOT NULL)"
" Filter: ("marketId" = 107416794::bigint)"
CREATE INDEX marketidindex
ON betlog
USING btree
("marketId" COLLATE pg_catalog."default");
Một ý tưởng:
SELECT "runnerId" FROM betlog WHERE "marketId" = '107416794' ORDER BY "runnerId" LIMIT 1 >1600ms
SELECT "runnerId" FROM betlog WHERE "marketId" = '107416794' ORDER BY "runnerId" >>100ms
Làm thế nào một LIMIT
có thể làm chậm quá trình truy vấn xuống?
Bạn có chỉ mục trên marketid không? –
[Tìm hiểu lý do tại sao một câu lệnh mất nhiều thời gian để thực hiện được thực hiện bằng lệnh GIẢI THÍCH] (http://wiki.postgresql.org/wiki/Using_EXPLAIN) – raina77ow
có nó có chỉ mục – wutzebaer