ฉันมีตารางที่มีดัชนีหลายคอลัมน์และฉันมีข้อสงสัยเกี่ยวกับการเรียงลำดับที่เหมาะสมของดัชนีเพื่อให้ได้ประสิทธิภาพสูงสุดในการสืบค้น
สถานการณ์:
PostgreSQL 8.4 ตารางที่มีประมาณหนึ่งล้านแถว
ค่าในคอลัมน์c1สามารถมีประมาณ100 ค่าที่แตกต่างกัน เราสามารถสันนิษฐานได้ว่าค่ามีการกระจายอย่างเท่าเทียมกันดังนั้นเราจึงมีประมาณ 10,000 แถวสำหรับทุกค่าที่เป็นไปได้
คอลัมน์c2สามารถมี1,000 ค่าที่แตกต่าง เรามี 1,000 แถวสำหรับทุกค่าที่เป็นไปได้
เมื่อค้นหาข้อมูลเงื่อนไขจะมีค่าสำหรับคอลัมน์สองคอลัมน์เหล่านี้เสมอดังนั้นตารางจะมีดัชนีหลายคอลัมน์ซึ่งรวม c1 และ c2 ฉันได้อ่านเกี่ยวกับความสำคัญของการจัดเรียงคอลัมน์ในดัชนีหลายคอลัมน์อย่างถูกต้องหากคุณมีข้อความค้นหาที่ใช้เพียงคอลัมน์เดียวในการกรอง นี่ไม่ใช่กรณีในสถานการณ์ของเรา
คำถามของฉันคือคำถามนี้:
จากข้อเท็จจริงที่ว่าหนึ่งในตัวกรองเลือกชุดข้อมูลที่เล็กกว่ามากฉันจะปรับปรุงประสิทธิภาพได้ไหมถ้าดัชนีตัวแรกเป็นตัวเลือกที่เลือกได้มากที่สุด ฉันไม่เคยพิจารณาคำถามนี้จนกระทั่งเห็นกราฟิกจากบทความที่อ้างอิง:
ภาพที่นำมาจากบทความที่อ้างอิงเกี่ยวกับดัชนีหลายคอลัมน์
แบบสอบถามใช้ค่าจากสองคอลัมน์ในการกรอง ฉันไม่มีข้อความค้นหาที่ใช้เพียงหนึ่งคอลัมน์ในการกรอง พวกเขาทั้งหมดคือ: WHERE c1=@ParameterA AND c2=@ParameterB
. นอกจากนี้ยังมีเงื่อนไขเช่นนี้:WHERE c1 = "abc" AND c2 LIKE "ab%"