1
เพิ่มประสิทธิภาพการสืบค้นฐานข้อมูลขนาดใหญ่ (25+ ล้านแถวโดยใช้ max () และ GROUP BY)
ฉันใช้ Postgres 9.3.5 และฉันมีตารางขนาดใหญ่ในฐานข้อมูลปัจจุบันมี 25 ล้านแถวและมีแนวโน้มที่จะใหญ่ขึ้นอย่างรวดเร็ว ฉันพยายามเลือกแถวที่เฉพาะเจาะจง (ทุกแถวมีเฉพาะแถวunit_idล่าสุดunit_timestampสำหรับแถวแต่ละแถว) ด้วยข้อความค้นหาง่ายๆเช่น: SELECT unit_id, max(unit_timestamp) AS latest_timestamp FROM all_units GROUP BY unit_id; ไม่มีดัชนีใด ๆ แบบสอบถามนี้ใช้เวลาประมาณ 35 วินาทีในการดำเนินการ ด้วยดัชนีที่กำหนด ( CREATE INDEX partial_idx ON all_units (unit_id, unit_timestamp DESC);) เวลาแบบสอบถามจะสั้นลงเป็นประมาณ (เท่านั้น) 19 วินาที ฉันสงสัยว่าจะเป็นไปได้หรือไม่ที่จะเรียกใช้คิวรีของฉันในเวลาที่น้อยลง (เช่นเพียงไม่กี่วินาที) และถ้าเป็นเช่นนั้นฉันควรทำตามขั้นตอนใดเพื่อปรับให้เหมาะสมยิ่งขึ้นไปอีก การถ่ายโอนข้อมูลโครงสร้างตารางของฉันมีลักษณะเช่นนี้: CREATE TABLE "all_units" ( "unit_id" int4 NOT NULL, …