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

لماذا تكون الاستعلامات \"IN\" مع الاستعلامات الفرعية في MySQL بطيئة، وكيف يمكنني تحسين الأداء؟

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

Why are \

استعلامات "IN" البطيئة مع الاستعلامات الفرعية في MySQL

يمكن أن تظهر استعلامات MySQL التي تستخدم عامل التشغيل "IN" تدهورًا كبيرًا في الأداء عند استخدام الاستعلام الفرعي استرداد قيم جملة "IN" أمر معقد. في مثل هذه الحالات، يؤدي استبدال نتائج الاستعلام الفرعي بقيم صريحة إلى تحسينات كبيرة في وقت التنفيذ.

لفهم سبب هذا السلوك، من المهم ملاحظة أن MySQL تنفذ استعلامات فرعية في كل مرة يتم فيها تقييم الاستعلام "IN" . في المثال المقدم، هناك 7 ملايين صف في جدول em_link_data، تتم معالجة كل منها بشكل منفصل، مما يؤدي إلى العديد من تقييمات الاستعلامات الفرعية.

من ناحية أخرى، يؤدي استبدال الاستعلام الفرعي بقيم صريحة إلى إلغاء الحاجة إلى عمليات تنفيذ الاستعلام الفرعي المتكررة، مما يؤدي إلى زيادة كبيرة في الأداء. يمكن تحقيق ميزة أداء مماثلة باستخدام JOIN بدلاً من الاستعلام الفرعي "IN"، مما يؤدي إلى تحسين عملية التنفيذ.

لسوء الحظ، لا يستطيع المستخدم تعديل الاستعلام بسبب قيود البرنامج. في مثل هذه الحالات، من المفيد البحث عن طرق بديلة لتحسين الأداء، مثل تحسين الجداول المعنية عن طريق إنشاء فهارس مناسبة أو استكشاف طرق لتقليل عدد الصفوف التي تتم معالجتها بواسطة الاستعلام.

أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3