30 ก.ย. เวลา 11:00 • การศึกษา
Data By Shoper Gamer

Secondary Key คืออะไร

โดย
ในโลกของฐานข้อมูลที่ข้อมูลมีปริมาณมหาศาล Secondary Key (คีย์รอง) ทำหน้าที่เป็นทางลัดที่ช่วยให้เราสามารถเข้าถึงข้อมูลได้อย่างรวดเร็วโดยไม่ต้องพึ่งพาแค่ Primary Key เท่านั้น บทความนี้จะพาคุณเจาะลึกไปกับ Secondary Key ตั้งแต่แนวคิดพื้นฐานไปจนถึงการนำไปใช้งานจริง
  • ​Secondary Key คืออะไร
Secondary Key คือ คุณลักษณะ หรือ ชุดของคุณลักษณะที่ใช้สำหรับการค้นหา และ เข้าถึงข้อมูลอย่างมีประสิทธิภาพ แต่ไม่ได้ถูกใช้เป็นตัวระบุหลัก โดยมีลักษณะสำคัญคือ
✅️ ไม่ใช่ Primary Key
✅️ ใช้สร้างดัชนี (Index) เพื่อเพิ่มความเร็ว
✅️ อาจมีค่าซ้ำกันได้
✅️ ช่วยในการค้นหาจากเงื่อนไขต่างๆ
  • ​Secondary Key ทำงานอย่างไร
✅️ การสร้างดัชนี บนคุณลักษณะที่ใช้สืบค้นบ่อย
✅️ การเรียงลำดับข้อมูล ตามคีย์รอง
✅️ การค้นหาอย่างมีประสิทธิภาพ (โดยใช้ดัชนี)
✅️ การลดเวลาในการสืบค้น (Query)
☆ กลไกการทำงาน
1) ระบบสร้าง Index Structure แยกต่างหาก
2) เก็บ Pointer ไปยังข้อมูลจริง
3) ช่วยลดการสแกนข้อมูลทั้งตาราง (Full Table Scan)
  • ​ประเภทของ Secondary Key
1) Single Column Secondary Key ใช้คุณลักษณะเดียว
○ ตัวอย่าง: ดัชนีบนคอลัมน์ Email
○ เหมาะสำหรับ: การค้นหาจากค่าเดียว
2) Composite Secondary Key
ใช้หลายคุณลักษณะรวมกัน
○ ตัวอย่าง: ดัชนีบน (LastName, FirstName)
○ เหมาะสำหรับ: การค้นหาที่ซับซ้อน
3) Unique Secondary Key
ค่าต้องไม่ซ้ำกัน
○ ตัวอย่าง: ดัชนีบนคอลัมน์ Username
○ ใช้เมื่อ: ต้องการบังคับความไม่ซ้ำกัน (Unique)
4) Non-unique Secondary Key อนุญาตให้ค่าซ้ำกันได้
○ ตัวอย่าง: ดัชนีบนคอลัมน์ Department
○ ใช้เมื่อ: ค่าอาจซ้ำกันได้
  • ​ประโยชน์
✅ เพิ่มความเร็วในการค้นหา
✅ ลดภาระการประมวลผล ของเซิร์ฟเวอร์ฐานข้อมูล
✅ รองรับการสืบค้น (Query) ที่หลากหลาย
✅ ปรับปรุงประสิทธิภาพโดยรวมของระบบ
✅ ช่วยในการเรียงลำดับข้อมูล
  • ​ตัวอย่างการใช้งาน
☆ ตัวอย่าง 1 ระบบลูกค้า
SQL
CREATE TABLE Customers (
CustomerID INT PRIMARY KEY,
Email VARCHAR(100) UNIQUE, -- Secondary Key (Unique)
PhoneNumber VARCHAR(15),
FirstName VARCHAR(50),
LastName VARCHAR(50),
City VARCHAR(50),
INDEX idx_email (Email), -- Secondary Index
INDEX idx_name (LastName, FirstName), -- Composite Secondary Index
INDEX idx_city (City) -- Non-unique Secondary Index
);
☆ ตัวอย่าง 2 ระบบสินค้า
SQL
CREATE TABLE Products (
ProductID INT PRIMARY KEY,
ProductCode VARCHAR(20) UNIQUE,
ProductName VARCHAR(100),
Category VARCHAR(50),
Price DECIMAL(10,2),
INDEX idx_category (Category),
INDEX idx_price (Price),
INDEX idx_name_category (ProductName, Category)
);
☆ ตัวอย่าง 3 ระบบ Orders
SQL
CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
CustomerID INT,
OrderDate DATE,
Status VARCHAR(20),
TotalAmount DECIMAL(10,2),
INDEX idx_customer_date (CustomerID, OrderDate),
INDEX idx_status (Status),
INDEX idx_date (OrderDate)
);
  • ​เมื่อไหร่ควรใช้ Secondary Key
✅️ คอลัมน์นั้นใช้ในการค้นหาบ่อย
✅️ ต้องการเพิ่มความเร็วในการสืบค้น
✅️ มีข้อมูลจำนวนมาก
✅️ ต้องการรองรับการเรียงลำดับ (Ordering)
  • ​เมื่อไหร่ไม่ควรใช้ Secondary Key
🙅‍♂️ ตารางมีขนาดเล็ก (การสร้างดัชนีอาจไม่มีผลมาก)
🙅‍♂️ คอลัมน์นั้นไม่ค่อยถูกใช้ค้นหา
🙅‍♂️ ข้อมูลมีการเปลี่ยนแปลง (Insert/Update/Delete) บ่อยมาก (เพราะต้องอัปเดตดัชนีทุกครั้ง)
  • ​การสร้าง Secondary Key
1) การสร้างพร้อมตาราง
SQL
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
DepartmentID INT,
HireDate DATE,
Salary DECIMAL(10,2),
INDEX idx_department (DepartmentID),
INDEX idx_hire_date (HireDate),
INDEX idx_salary (Salary)
);
2) การเพิ่มภายหลัง
SQL
-- สร้าง non-unique index
CREATE INDEX idx_customer_name ON Customers(LastName, FirstName);
-- สร้าง unique index
CREATE UNIQUE INDEX idx_product_code ON Products(ProductCode);
-- สร้าง composite index
CREATE INDEX idx_order_customer_date ON Orders(CustomerID, OrderDate);
3) การลบ Secondary Key
SQL
DROP INDEX idx_customer_name ON Customers;
การใช้งานใน Query
  • ​การค้นหา Secondary Key
SQL
-- ใช้ Index บน Email
SELECT * FROM Customers WHERE Email = 'john@example.com';
-- ใช้ Composite Index
SELECT * FROM Customers
WHERE LastName = 'Smith' AND FirstName = 'John';
-- ใช้ Index กับ Range Query
SELECT * FROM Orders WHERE OrderDate BETWEEN '2024-01-01' AND '2024-01-31';
  • ​การเรียงลำดับด้วย Secondary Key
SQL
-- ใช้ Index ในการเรียงลำดับ
SELECT * FROM Products
ORDER BY Category, ProductName;
-- ใช้ Index กับทั้งการกรองและการเรียงลำดับ
SELECT * FROM Orders
WHERE CustomerID = 100
ORDER BY OrderDate DESC;
  • ​การจัดการ และ การเก็บบำรุงรักษา
1) การตรวจสอบ Index
SQL
-- MySQL
SHOW INDEX FROM Customers;
-- PostgreSQL
SELECT * FROM pg_indexes WHERE tablename = 'customers';
-- SQL Server
EXEC sp_helpindex 'Customers';
2) การอัปเดตสถิติ
SQL
-- MySQL
ANALYZE TABLE Customers;
-- SQL Server
UPDATE STATISTICS Customers;
✏️ Shoper Gamer
Credit :
👇
  • ​https://www.tutorialspoint.com/secondary-key-in-rdbms
  • ​https://intellipaat.com/blog/secondary-key-in-dbms/
  • ​https://www.teach-ict.com/as_as_computing/ocr/H447/F453/3_3_9/dbkey/miniweb/pg4.htm
  • ​https://www.geeksforgeeks.org/dbms/partial-unique-secondary-composite-and-surrogate-keys-in-dbms/

ดูเพิ่มเติมในซีรีส์

โฆษณา