Char vs Varchar เลือกใช้ให้เหมาะสมเพื่อเพิ่มประสิทธิภาพฐานข้อมูล

SQL Knowledge ทั้ง sql มาตรฐาน หลักการออกแบบฐานข้อมูล ความสัมพันธ์ของ ตาราง Mysql , PGSQL, Oracle, MSSQL

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
Piggy_aim
PHP Full Member
PHP Full Member
โพสต์: 46
ลงทะเบียนเมื่อ: 07/03/2023 9:24 am

Char vs Varchar เลือกใช้ให้เหมาะสมเพื่อเพิ่มประสิทธิภาพฐานข้อมูล

โพสต์ที่ยังไม่ได้อ่าน โดย Piggy_aim »

Char และ Varchar เป็นประเภทของข้อมูล ที่อยู่ใน PostgreSQL ที่ใช้สำหรับเก็บข้อมูลแบบสตริง (string) ซึ่งเป็นข้อมูลที่มีความหลากหลายและสำคัญในการพัฒนาซอฟต์แวร์และการจัดเก็บข้อมูลในฐานข้อมูล การเลือกใช้นั้นขึ้นอยู่กับลักษณะของข้อมูลที่จะเก็บและการใช้งานที่ต้องการ โดยปกติแล้ว ผู้พัฒนาซอฟต์แวร์และผู้ดูแลฐานข้อมูลจะต้องพิจารณาให้ถูกต้องเพื่อให้ได้ประสิทธิภาพและประโยชน์ที่เหมาะสมในการใช้งานจริง

ภาพตารางเปรียบเทียบ CHAR และ VARCHAR
ภาพตารางเปรียบเทียบ CHAR และ VARCHAR
Char vs Varchar.png (249.48 KiB) Viewed 16070 times

ก่อนอื่นจะเริ่มอธิบายเรื่องถึงข้อแตกต่างระหว่าง Char และ Varchar โดยละเอียด เพื่อช่วยให้ผู้ใช้งานเข้าใจและตัดสินใจเลือกใช้ประเภทข้อมูลที่เหมาะสมกับการใช้งานของตนเอง จะอธิบายถึงลักษณะและคุณสมบัติของ Char และ Varchar ดังนี้

Char
Char เป็นชนิดข้อมูลที่ใช้สำหรับเก็บข้อความหรือสตริง ที่มีความยาวคงที่ กำหนดไว้ล่วงหน้าในการสร้างตาราง (table) หรือฟิลด์ (field) โดยต้องกำหนดความยาวของ Char ว่าจะเก็บได้กี่ตัวอักษร ตัวอย่างเช่น หากกำหนดความยาวของ Char เป็น 10 จะเก็บได้เพียง 10 ตัวอักษรเท่านั้น ไม่ว่าจะมีข้อความที่น้อยกว่า 10 ตัวอักษรก็ตาม

Varchar
Varchar เป็นชนิดข้อมูลที่ใช้สำหรับเก็บข้อความหรือสตริง ที่มีความยาวไม่คงที่ กำหนดไม่ต้องกำหนดความยาวของข้อมูลไว้ล่วงหน้า โดยข้อมูลจะเก็บเท่าที่มีจริง ตัวอย่างเช่น หากมีข้อความที่มีความยาว 20 ตัวอักษร จะเก็บข้อมูลได้ 20 ตัวอักษร แต่หากมีข้อความที่มีความยาวเกินความยาวที่กำหนด จะตัดข้อมูลและเก็บได้ตามความยาวที่กำหนดไว้

ข้อแตกต่างของ Char และ Varchar
เราสามารถแยกความแตกต่างระหว่าง Char และ Varchar ได้ดังนี้
  • ความยาวของข้อมูล

    Char เป็นข้อมูลที่มีความยาวคงที่ ซึ่งหมายความว่าถ้าเรากำหนดให้ Char เก็บข้อมูลสูงสุด 10 ตัวอักษร แม้ว่าข้อมูลที่จะเก็บจะไม่ถึง 10 ตัวอักษรก็ตาม Char จะใช้พื้นที่ในหน่วยความจำเท่ากับ 10 ตัวอักษรเสมอ

    Varchar เป็นข้อมูลที่มีความยาวเปลี่ยนแปลงได้ ซึ่งหมายความว่าถ้าเรากำหนดให้ Varchar เก็บข้อมูลสูงสุด 10 ตัวอักษร และเราเก็บข้อมูลที่มีความยาวไม่ถึง 10 ตัวอักษร Varchar จะใช้พื้นที่ในหน่วยความจำเท่ากับความยาวของข้อมูลที่เก็บเท่านั้น
  • การใช้พื้นที่ในหน่วยความจำ

    Char ใช้พื้นที่ในหน่วยความจำที่คงที่ตลอดเวลา ไม่ว่าจะเก็บข้อมูลครั้งต่อไปเป็นอย่างไร Char จะใช้พื้นที่ในหน่วยความจำเท่ากับความยาวของข้อมูลที่กำหนดไว้เสมอ
    Varchar ใช้พื้นที่ในหน่วยความจำเพียงพอต่อความยาวของข้อมูลที่เก็บ เมื่อเราเก็บข้อมูลที่มีความยาวน้อยกว่าความยาวสูงสุดที่กำหนดไว้
  • การการเรียกใช้ข้อมูล

    Char จะใช้เวลาในการค้นหาข้อมูลได้เร็วกว่า Varchar เนื่องจาก Char มีความยาวคงที่ และฐานข้อมูลจะไม่ต้องคำนวณหรือตรวจสอบความยาวของข้อมูลก่อนจะส่งผลลัพธ์กลับมาให้เรา

    Varchar จะใช้เวลาในการค้นหาข้อมูลนานขึ้นเล็กน้อยเมื่อเทียบกับ Char เนื่องจาก Varchar มีความยาวที่เปลี่ยนแปลงได้ และฐานข้อมูลจะต้องตรวจสอบความยาวของข้อมูลก่อนจะส่งผลลัพธ์กลับมาให้เรา

แนวทางการใช้งานอย่างเหมาะสม

Char เหมาะสำหรับการเก็บข้อมูลที่มีความยาวคงที่ เช่น หมายเลขประจำตัวประชาชน รหัสนักศึกษาหรือรหัสสินค้าที่มีจำนวนตัวอักษรที่แน่นอน เพราะ Char จะใช้พื้นที่ในหน่วยความจำได้อย่างมีประสิทธิภาพ

Varchar เหมาะสำหรับการเก็บข้อมูลที่มีความยาวเปลี่ยนแปลงได้ เช่น ชื่อผู้ใช้งาน ที่อยู่ หรือคำอธิบายสินค้า เพราะ Varchar จะใช้พื้นที่ในหน่วยความจำตามความยาวของข้อมูลที่เก็บ และจะช่วยประหยัดพื้นที่ในฐานข้อมูลได้


และแม้ Char และ Varchar นั้นจะเป็นข้อมูลประเภทเดียวกันที่มีลักษณะคล้ายกัน แต่ก็ยังมีความแตกต่างการในการใช้งานอย่างมีนัยสำคัญมาก ฉะนั้นอย่าลืมเลือกใช้งานประเภทของข้อมูลให้เหมาะสมกับงาน เพื่อให้เกิดประสิทธิภาพ ความรวดเร็วในการเรียกใช้งานกับการจัดการฐานข้อมูลและประโยชน์ที่เหมาะสมในการใช้งานจริง เพื่อต่อยอดประยุกต์กับการสร้างฐานข้อมูลในอนาคตอย่ามีประสิทธิภาพและคุ้มค่า


อ้างอิง
  • http://www.differencebetween.info/difference-between-char-and-varchar
  • https://arctype.com/blog/char-vs-varchar-mysql
  • https://www.vertica.com/docs/11.1.x/HTML/Content/Authoring/SQLReferenceManual/DataTypes/CharacterDataTypes.htm
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 1