شرح صفوف ومحتوى الفقرة
حتى لو كتبت العمود المفهرس مجرداً خارج الدوال، هناك فخّان صامتان يعطّلان فهارس B+Tree في الأنظمة الإنتاجية:
- الفخ الأول (النجمة البادئة Leading Wildcard
LIKE '%text'): عندما تبدأ عبارة المطابقة برمز النسبة المئوية%، يعجز الفهرس الشجري عن معرفة الحرف الأول الذي يبدأ منه البحث؛ بينما يعمل الفهرس بكفاءة تامة إذا كانت النجمة في النهاية فقطLIKE 'text%'(Prefix Match). - الفخ الثاني (التحويل الضمني للأنواع Implicit Type Conversion): إذا كان عمود
phoneأوnational_idمن النوع النصيVARCHAR، وكتبت في الاستعلام رقماً بدون علامتي تنصيصWHERE phone = 501234567، فإن MySQL يحوّل نص كل صف في الجدول إلى رقم لمقارنته، مما يبطل الفهرس تماماً ويحوله إلى فحص كاملtype = ALL!
SQL
EXPLAIN SELECT customer_id, full_name, phone FROM customers WHERE phone LIKE '050123%';