VARCHAR(320)
ผมเคยใช้เสมอ นี่คือเหตุผล มาตรฐานกำหนดข้อ จำกัด ต่อไปนี้:
- 64 ตัวอักษรสำหรับ "local part" (ชื่อผู้ใช้)
- 1 ตัวอักษรสำหรับ
@
สัญลักษณ์
- 255 ตัวอักษรสำหรับชื่อโดเมน
ตอนนี้บางคนจะบอกว่าคุณต้องการการสนับสนุนมากกว่านั้น บางคนจะบอกว่าคุณต้องรองรับ Unicode สำหรับชื่อโดเมน (หมายถึงคุณต้องเปลี่ยนไปใช้NVARCHAR
) ในขณะที่มาตรฐานอาจมีการเปลี่ยนแปลงในระหว่างนี้ (เป็นเวลานานแล้วตั้งแต่ที่ฉันมีสกินในเกม) ฉันค่อนข้างมั่นใจว่าในเวลานี้เซิร์ฟเวอร์ส่วนใหญ่ในโลกจะไม่ยอมรับที่อยู่อีเมล Unicode และฉันมั่นใจ เซิร์ฟเวอร์จำนวนมากจะมีปัญหาในการสร้างและ / หรือการรับที่อยู่ด้วย> 320 ตัวอักษร
ที่กล่าวว่าคุณสามารถเตรียมการที่เลวร้ายที่สุดในตอนนี้ถ้าคุณชอบ (และถ้าคุณกำลังใช้การบีบอัดข้อมูลใน SQL Server 2008 R2 หรือดีกว่าคุณจะได้รับประโยชน์จากการบีบอัด Unicode ซึ่งหมายความว่าคุณจ่าย 2 ไบต์เท่านั้นสำหรับอักขระที่ต้องการจริงๆ มัน). วิธีนี้คุณสามารถสร้างคอลัมน์ของคุณให้กว้างที่สุดเท่าที่คุณต้องการและคุณสามารถปล่อยให้คนอื่น ๆ ขยะในที่นั่นนานเกินไปที่พวกเขาต้องการ - พวกเขาจะไม่ได้รับอีเมลหากพวกเขาให้ขยะเหมือนกับที่พวกเขาจะไม่ รับอีเมลหากส่วนแทรกล้มเหลว ปัญหาคือถ้าคุณปล่อยขยะที่ไม่ถูกต้องคุณต้องจัดการกับมัน และไม่ว่าคุณจะมีขนาดเท่าไหร่ - ถ้ามีคนลองใส่ 400 ตัวในคอลัมน์ 320 ตัวใคร ๆ ก็จะลองใส่ 1025 ตัวอักษรในคอลัมน์ 1024 ตัว ไม่มีเหตุผลที่บุคคลที่เหมาะสมควรมีที่อยู่อีเมล> 320 ตัวอักษรเว้นแต่จะใช้เพื่อทดสอบขอบเขตของระบบอย่างชัดเจน
แต่หยุดถามความคิดเห็นเกี่ยวกับเรื่องนี้ - และหยุดดูการใช้งานอื่น ๆ เพื่อขอคำแนะนำ (มันเกิดขึ้นในกรณีนี้ว่าสิ่งที่คุณอ้างอิงไม่ได้สนใจที่จะทำการบ้านของตัวเองและเพิ่งหยิบตัวเลขออกมาจากพวกเขาดีคุณรู้) . คุณสามารถเข้าถึงมาตรฐานได้โดยตรง - ตรวจสอบให้แน่ใจว่าคุณใช้เวอร์ชันล่าสุดสนับสนุนอย่างน้อยที่สุดและอยู่ด้านบนของมาตรฐานเพื่อให้คุณสามารถปรับตัวเข้ากับการเปลี่ยนแปลงในรายละเอียดได้
แก้ไขขอบคุณ @ypercube สำหรับ ping ในการแชท
นอกจากนี้คุณอาจไม่ต้องการทิ้งที่อยู่ทั้งหมดไว้ในคอลัมน์เดียวตั้งแต่แรก การทำให้เป็นมาตรฐานอาจแนะนำว่าคุณไม่ต้องการเก็บ@hotmail.com
15 ล้านครั้งเมื่อ int FK ที่น่ากินมากขึ้นจะทำงานได้ดีและไม่มีค่าใช้จ่ายเพิ่มเติมของคอลัมน์ความยาวผันแปร คุณอาจจะยังปกติชื่อผู้ใช้ที่เป็นjohn.smith@hotmail.com
และjohn.smith@gmail.com
แบ่งปันชื่อผู้ใช้ทั่วไป - พวกเขาไม่รู้จักกัน แต่ฐานข้อมูลของคุณไม่สนใจเกี่ยวกับว่า
ฉันพูดเกี่ยวกับบางสิ่งที่นี่:
http://www.mssqltips.com/sqlservertip/2657/storing-email-addresses-more-efficiently-in-sql-server/
http://www.mssqltips.com/sqlservertip/2671/storing-email-addresses-more-efficiently-in-sql-server--part-2/
สิ่งนี้นำเสนอความท้าทายอย่างไรก็ตามขีด จำกัด ของอักขระ 254 ตัวด้านบนเนื่องจากดูเหมือนจะไม่มีความเห็นพ้องกันเกี่ยวกับสิ่งที่เกิดขึ้นเมื่อโดเมน 255 อักขระที่ถูกต้องรวมกับ localpart 1 ตัวที่ถูกต้อง สิ่งนี้ควรได้รับการยอมรับจากเซิร์ฟเวอร์ส่วนใหญ่ทั่วโลก แต่ดูเหมือนจะละเมิดขีดจำกัดความยาว 254 อักขระ ดังนั้นคุณจึงสร้างDomains
ตารางที่มีข้อ จำกัด ด้านล่างของที่อยู่อีเมลที่ไม่ถูกต้องเมื่อโดเมนสามารถนำกลับมาใช้ใหม่เป็น URL 255 อักขระที่ถูกต้องได้หรือไม่