Tôi có một bảng lớn (> hàng 50m) trong đó có một số dữ liệu với một ID và dấu thời gian:Đẩy nhanh PostgreSQL truy vấn, nơi dữ liệu là giữa hai ngày
id, timestamp, data1, ..., dataN
... với nhiều cột chỉ mục trên (id, timestamp)
.
tôi cần phải truy vấn bảng để chọn tất cả các hàng với một ID nhất định mà thời gian có được giữa hai ngày, mà tôi hiện đang làm sử dụng:
SELECT * FROM mytable WHERE id = x AND timestamp BETWEEN y AND z
này hiện mất hơn 2 phút về một kết thúc cao máy (2x 3Ghz Xeon lõi kép với HT/RAM, RAM 16GB, ổ đĩa 2x 1TB trong RAID 0) và tôi thực sự muốn tăng tốc.
Tôi đã tìm thấy this tip đề xuất sử dụng chỉ mục không gian, nhưng ví dụ mà nó đưa ra là dành cho địa chỉ IP. Tuy nhiên, tốc độ tăng (436s đến 3s) là ấn tượng.
Tôi làm cách nào để sử dụng tính năng này với dấu thời gian?
* Xác định máy cao cấp? Thực sự ... 50 triệu hàng giờ là một bảng lớn theo tiêu chuẩn ngày nay. * Vì vậy, bảng có ID - dấu thời gian ở đâu? * Chỉ số nào? Thiếu chỉ mục cộng với phần cứng crappy (đĩa cao cấp + bình thường) có thể dẫn đến kết quả đó. – TomTom
Dual 3GHz Xeon Dual-core với HT, RAM 16 GB vv Bảng có (id, dấu thời gian, dữ liệu) với chỉ mục nhiều cột trên (id, dấu thời gian). – Roger
KHÔNG cao cấp bởi bất kỳ phương tiện .... espeically như bạn không nói bất cứ điều gì về các đĩa ....., đó là một phần quan trọng cho bất kỳ máy chủ cơ sở dữ liệu. MUCH mor ethan CPU, hoặc RAM. Bố cục đĩa của bạn là gì? – TomTom