"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني جعل وظيفة FIND_IN_SET الخاصة بـ MySQL تستخدم المؤشرات؟

كيف يمكنني جعل وظيفة FIND_IN_SET الخاصة بـ MySQL تستخدم المؤشرات؟

تم النشر بتاريخ 2024-11-12
تصفح:690

How Can I Make MySQL's FIND_IN_SET Function Utilize Indices?

هل يمكن إنشاء MySQL FIND_IN_SET لاستخدام المؤشرات؟

وظيفة FIND_IN_SET الخاصة بـ MySQL سيئة السمعة لعدم استخدام المؤشرات، مما يؤدي إلى استعلامات غير فعالة. ومع ذلك، هناك طرق بديلة لتحقيق سلوك الفهرسة المطلوب عند التعامل مع قوائم مفصولة بفواصل.

نهج النطاق

تقترح التقنية الموضحة في الإجابة المقدمة استخدام عبارة معدة مع معلمة قبول سلسلة في شكل قائمة مفصولة بفواصل. باستخدام نوع النطاق مع مفتاح غير NULL في العبارة المعدة، فإنه يضمن أنه سيتم استخدام الفهارس عند تنفيذ جملة IN.

على سبيل المثال، يقوم الاستعلام التالي بإجراء بحث عن نطاق باستخدام فهرس على عمود "المعرف":

شرح حدد * من التصنيفات التي يوجد فيها المعرف (2331425، 430364، 4557546، 2696638، 4510549، ...)
explain 
select * from ratings where id in (2331425, 430364, 4557546, 2696638, 4510549, ...)
الاحتياطات والتحذيرات

بينما يسمح هذا الأسلوب بإجراء استعلامات مفهرسة فعالة، فمن الضروري النظر في ما يلي الاحتياطات:

  • هجمات حقن SQL: يمكن أن يؤدي استخدام البيانات المقدمة من المستخدم في الإجراءات المخزنة إلى فتح سبل لهجمات حقن SQL. يعد التطهير المناسب أمرًا ضروريًا لمنع تنفيذ التعليمات البرمجية الضارة.
  • عمليات فحص الجداول: إذا لم تتم فهرسة العمود المستخدم للبحث في النطاق أو يحتوي على قيم غير فارغة، فقد يؤدي ذلك إلى فحص جدول مخيف ، وهو غير فعال للغاية بالنسبة لمجموعات البيانات الكبيرة.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3