3
ชนิดข้อมูลที่เหมาะสมที่สุดสำหรับเขตข้อมูล MD5 คืออะไร
เรากำลังออกแบบระบบที่รู้กันว่าอ่านยาก (ตามคำสั่งของการอ่านหมื่นครั้งต่อนาที) มีตารางnamesที่ทำหน้าที่จัดเรียงรีจิสทรีกลาง แต่ละแถวมีtextเขตข้อมูลrepresentationและไม่ซ้ำกันkeyซึ่งเป็นแฮช MD5 ของสิ่งrepresentationนั้น 1ตารางนี้มีระเบียนหลายสิบล้านระเบียนและคาดว่าจะเติบโตเป็นพันล้านตลอดอายุการใช้งานแอปพลิเคชัน มีตารางอื่น ๆ อีกหลายสิบตาราง (ของสคีมาที่แตกต่างกันอย่างมากและจำนวนเรคคอร์ด) ที่อ้างอิงถึงnamesตาราง ระเบียนใดก็ตามที่ระบุในตารางใดตารางหนึ่งเหล่านี้รับประกันว่าจะมี a name_keyซึ่งเป็น foreign key ไปยังnamesตาราง 1: อนึ่งตามที่คุณคาดไว้ระเบียนในตารางนี้จะไม่เปลี่ยนรูปเมื่อมีการเขียน สำหรับตารางใดก็ตามที่ไม่ใช่namesตารางแบบสอบถามที่พบบ่อยที่สุดจะเป็นไปตามรูปแบบนี้: SELECT list, of, fields FROM table WHERE name_key IN (md5a, md5b, md5c...); ฉันต้องการปรับให้เหมาะสมสำหรับการอ่าน ฉันสงสัยว่าจุดแรกของฉันควรจะลดขนาดของดัชนี (แม้ว่าฉันจะไม่ได้รับการพิสูจน์ว่าผิด) คำถาม: อะไรคือ / ชนิดข้อมูลที่ดีที่สุดสำหรับkeyและname_keyคอลัมน์คืออะไร? มีเหตุผลที่จะใช้hex(32)มากกว่าbit(128)? BTREEหรือGIN?