การสแกนด้วย Index
เพื่อนของคุณอาศัยอยู่ที่ฮาวาย ซึ่งหมอกควันจากภูเขาไฟกำลังทำให้โรคหอบหืดของเขาแย่ลง คุณจึงช่วยเขาค้นหาสถานที่อยู่อาศัยใหม่ โดยใช้ข้อมูลคุณภาพอากาศระดับมณฑลจาก Environmental Protection Agency คุณตัดสินใจว่าบ้านใหม่ของเขาควรมีคุณภาพอากาศที่ดีอย่างน้อย 90% ของวันทั้งหมดในปี
เนื่องจากสหรัฐอเมริกามีมณฑลจำนวนมาก ตาราง air quality จึงมีขนาด ใหญ่มาก คิวรีแรก (ที่ไม่ได้แสดงไว้) ใช้การสแกนแบบ sequential scan และใช้เวลานานมาก
คุณจึงตัดสินใจเพิ่ม index ให้กับคอลัมน์ที่ติดตามจำนวนวันที่คุณภาพอากาศดี จากนั้นตรวจสอบ query plan เพื่อดูว่าใช้การสแกนประเภทใด
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การเพิ่มประสิทธิภาพคิวรีใน PostgreSQL
คำแนะนำการฝึกหัด
- สร้าง index สำหรับตาราง
annual_aqiโดยใช้คอลัมน์good - กรองเฉพาะผลลัพธ์ที่มีคุณภาพอากาศระดับ
goodอย่างน้อย 90% ของปี - จำกัด
aqi_yearไว้ที่ปี 2017 และ 2018 เพื่อเน้นข้อมูลปีล่าสุด
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
CREATE INDEX good_index
ON ___(___);
EXPLAIN
SELECT state_name, county_name, aqi_year, good
FROM annual_aqi
WHERE ___ > 327 -- 90% of the year
AND ___ IN (___,___);