Index คือโครงสร้างข้อมูลที่แยกออกมาและเรียงลำดับไว้ (เป็น B-tree ใน InnoDB) ที่ช่วยให้ MySQL หาแถวได้โดยไม่ต้องสแกนทั้งตาราง หากไม่มี index การค้นหาจะอ่านทุกแถว (เรียกว่า full table scan); แต่ถ้ามี มันจะเดินไปตามต้นไม้เพียงไม่กี่ขั้น
Primary กับ secondary
ใน InnoDB ตัวตารางเอง คือ index ของ primary key — เรียกว่า clustered index แถวถูกจัดเก็บทางกายภาพตามลำดับของ primary key ดังนั้นการค้นหาด้วย primary key จึงไปตกที่แถวเต็มโดยตรง
คือ B-tree แยกอีกอันที่สร้างคีย์จากคอลัมน์อื่น โหนดใบ (leaf) ของมันเก็บค่าที่ทำ index ไว้บวกกับ ดังนั้นการใช้ secondary index จึงมักมีต้นทุนการค้นหาครั้งที่สอง ("กลับไปที่ clustered index") เพื่อดึงส่วนที่เหลือของแถว
