โครงสร้างข้อมูลที่ดีในการจัดเก็บหมายเลขโทรศัพท์ในช่องฐานข้อมูลคืออะไร? ฉันกำลังมองหาสิ่งที่ยืดหยุ่นพอที่จะจัดการกับหมายเลขระหว่างประเทศและยังเป็นสิ่งที่ช่วยให้สามารถสอบถามส่วนต่างๆของหมายเลขได้อย่างมีประสิทธิภาพ
แก้ไข:เพื่อชี้แจงกรณีการใช้งานที่นี่: ขณะนี้ฉันเก็บหมายเลขไว้ในช่อง varchar เดียวและฉันทิ้งไว้ตามที่ลูกค้าป้อน จากนั้นเมื่อต้องการหมายเลขตามรหัสฉันจะทำให้เป็นปกติ ปัญหาคือถ้าฉันต้องการค้นหาสองสามล้านแถวเพื่อค้นหาหมายเลขโทรศัพท์ที่ตรงกันมันเกี่ยวข้องกับฟังก์ชันเช่น
where dbo.f_normalizenum(num1) = dbo.f_normalizenum(num2)
ซึ่งไร้ประสิทธิภาพอย่างมาก นอกจากนี้การค้นหาที่กำลังมองหาสิ่งต่างๆเช่นรหัสพื้นที่ยังกลายเป็นเรื่องยุ่งยากมากเมื่อเป็นเพียงช่อง varchar เดียว
[แก้ไข]
มีคนให้คำแนะนำดีๆมากมายที่นี่ขอบคุณ! ในการอัปเดตนี่คือสิ่งที่ฉันกำลังทำอยู่ตอนนี้: ฉันยังคงเก็บตัวเลขไว้ตรงตามที่ป้อนไว้ในฟิลด์ varchar แต่แทนที่จะทำให้สิ่งต่าง ๆ เป็นปกติในเวลาสืบค้นฉันมีทริกเกอร์ที่ทำงานทั้งหมดเมื่อมีการแทรกระเบียน หรือปรับปรุง ดังนั้นฉันจึงมี ints หรือ bigints สำหรับส่วนต่างๆที่ฉันต้องการค้นหาและฟิลด์เหล่านั้นจะถูกจัดทำดัชนีเพื่อให้การสืบค้นทำงานเร็วขึ้น