0Pricing
SQL Academy · บทเรียน

ดัชนีสำหรับคำค้นที่พบบ่อย

เพิ่มดัชนีสำหรับคำค้นที่ใช้บ่อยที่สุด เช่น ตามผู้ใช้ ตามวันที่ และตามคีย์ต่างประเทศ แล้ววัดผลกระทบด้วย EXPLAIN

ดัชนีสำหรับคำค้นที่พบบ่อย เป็นบทเรียน SQL Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน SQL Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน

ดัชนีคืออะไร

ดัชนี คือโครงสร้างข้อมูลแยกต่างหากบนดิสก์ที่ช่วยให้ฐานข้อมูลค้นหาแถวด้วยค่าของคอลัมน์ได้โดยไม่ต้องสแกนทั้งตาราง วิธีการใช้งานแบบคลาสสิกคือโครงสร้างต้นไม้แบบ B

ดัชนีแลกความเร็วการเขียนกับการอ่าน

ดัชนีทุกตัวทำให้ INSERT/UPDATE/DELETE ช้าลงเล็กน้อย (เพราะต้องอัปเดตดัชนีด้วย) อย่าเพิ่มดัชนีที่ไม่จำเป็น

คีย์หลักมีดัชนีให้โดยอัตโนมัติ

การประกาศ PRIMARY KEY จะสร้างดัชนีแบบต้นไม้ B ที่ไม่ซ้ำกันโดยอัตโนมัติ เช่นเดียวกันกับคอลัมน์ UNIQUE

สร้างดัชนีให้คอลัมน์คีย์นอก

PostgreSQL จะไม่สร้างดัชนีให้ฝั่งลูกของ FK โดยอัตโนมัติ ควรเพิ่มดัชนีเสมอ — หากไม่มี การลบแถวแม่จะต้องสแกนแถวลูกทั้งหมด:

CREATE INDEX comments_post_id_idx ON comments(post_id);
CREATE INDEX comments_author_id_idx ON comments(author_id);

สร้างดัชนีให้คอลัมน์ที่ใช้ใน WHERE

หากกรองด้วย created_at บ่อยครั้ง ให้สร้างดัชนี:

CREATE INDEX posts_created_at_idx ON posts(created_at DESC);

-- Query benefits:
SELECT * FROM posts ORDER BY created_at DESC LIMIT 20;

ดัชนีแบบผสม

สำหรับตัวกรองหลายคอลัมน์ ดัชนีแบบผสมอาจทำงานได้เร็วกว่าแบบคอลัมน์เดี่ยวสองดัชนีมาก:

CREATE INDEX posts_author_published_idx
  ON posts(author_id, published_at DESC);

-- This query uses the index for both filter and sort:
SELECT * FROM posts
WHERE author_id = 42
ORDER BY published_at DESC LIMIT 10;

กฎคำนำหน้าด้านซ้าย

ดัชนีแบบผสม (a, b, c) รองรับ WHERE a = ? และ WHERE a = ? AND b = ? ได้ — แต่ไม่รองรับ WHERE b = ? เพียงอย่างเดียว ลำดับมีความสำคัญ

ดัชนีบางส่วน

สร้างดัชนีเฉพาะแถวที่คุณค้นหา:

-- Only published posts:
CREATE INDEX posts_published_idx
  ON posts(published_at DESC)
  WHERE published_at IS NOT NULL;

-- Smaller index, faster lookups for the common case.

ดัชนีจากนิพจน์

สร้างดัชนีจากฟังก์ชันของคอลัมน์:

CREATE INDEX users_email_lower_idx ON users(LOWER(email));

-- Query that uses it:
SELECT * FROM users WHERE LOWER(email) = LOWER($1);

อย่าสร้างดัชนีมากเกินไป

หลักง่าย ๆ:

  • สร้างดัชนีให้ PK ✓ (โดยอัตโนมัติ)
  • สร้างดัชนีให้คอลัมน์ UNIQUE ✓ (โดยอัตโนมัติ)
  • สร้างดัชนีให้คอลัมน์ FK ✓
  • สร้างดัชนีให้คอลัมน์ที่ใช้ใน WHERE / JOIN / ORDER BY ของคำค้นที่ใช้งานบ่อย
  • อย่าสร้างดัชนีให้คอลัมน์ที่มีความสามารถในการเลือกต่ำมาก (เช่น ค่าบูลีนที่แบ่งเป็น 50/50)

วัดผลด้วย EXPLAIN

ก่อนและหลังเพิ่มดัชนี ให้เรียกใช้ EXPLAIN ANALYZE เพื่อยืนยันว่าตัววางแผนการสืบค้นกำลังใช้ดัชนีนั้น:

EXPLAIN ANALYZE
SELECT * FROM posts WHERE author_id = 42 ORDER BY published_at DESC LIMIT 10;

สรุปทบทวน

สำหรับบล็อกของเรา: สร้างดัชนีให้ FK (post_id ใน comments, author_id ใน posts และ comments) และสร้างดัชนี (author_id, published_at DESC) ใน posts สำหรับคำค้น "โพสต์ล่าสุดของผู้ใช้":

ตรวจสอบความเข้าใจ

คุณเพิ่มคีย์นอก orders.user_id REFERENCES users(id) แล้ว ควรสร้างดัชนีใดหรือไม่

คำถามที่พบบ่อย

บทเรียน “ดัชนีสำหรับคำค้นที่พบบ่อย” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ดัชนีสำหรับคำค้นที่พบบ่อย” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส SQL Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ดัชนีสำหรับคำค้นที่พบบ่อย”

เพิ่มดัชนีสำหรับคำค้นที่ใช้บ่อยที่สุด เช่น ตามผู้ใช้ ตามวันที่ และตามคีย์ต่างประเทศ แล้ววัดผลกระทบด้วย EXPLAIN คุณปฏิบัติ SQL Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน SQL Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน SQL Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “ดัชนีสำหรับคำค้นที่พบบ่อย” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน SQL Academy นี้ได้ไหม

ได้ บทเรียน SQL Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การสร้างโมเดลบล็อก: ผู้ใช้ โพสต์ ความคิดเห็น
  2. การเลือกคีย์และชนิดข้อมูล
  3. ดัชนีสำหรับคำค้นที่พบบ่อย
  4. การเติมข้อมูลทดสอบลงฐานข้อมูล
← กลับไปที่ SQL Academy