البرمجة

تحسين أداء استعلام MySQL: أفضل الممارسات وتحسينات الأداء

في محاولة لتحسين استعلام MySQL الذي قدمته، يمكننا اتخاذ عدة خطوات لتحسين أدائه وجعله أكثر فاعلية. يبدو أن الهدف من هذا الاستعلام هو استرجاع بيانات محددة من جداول متعددة بناءً على معايير متعددة. الهدف الرئيسي هو تحسين أداء هذا الاستعلام وتحسين الكفاءة العامة لقاعدة البيانات.

أولاً وقبل كل شيء، يمكن تحسين الأداء بواسطة استخدام فهرس على الأعمدة التي يتم البحث فيها باستخدام عبارة LIKE. في هذا السياق، يمكن إضافة فهرس على الأعمدة p.realName و c.name لتسريع عمليات البحث.

sql
ALTER TABLE Personal ADD INDEX realName_index (realName); ALTER TABLE Company ADD INDEX name_index (name);

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

sql
SELECT DISTINCT u.id AS userId, u.type AS userType FROM User AS u LEFT JOIN Personal AS p ON u.id = p.userId LEFT JOIN Company AS c ON u.id = c.userId WHERE (p.realName LIKE '%adf%' AND u.type = 1) OR (c.name LIKE '%grge%') LIMIT 0, 10000;

باستخدام عبارة JOIN، يصبح الاستعلام أكثر وضوحًا وأسهل فهمًا، وفي بعض الحالات يمكن أن يؤدي إلى تحسين أداء الاستعلام.

أخيرًا، يمكن أن يكون تحديد الأعمدة التي يتم استرجاعها بدلاً من استخدام النجمة (*) أمرًا مفيدًا، خاصة إذا كانت هناك أعمدة غير مطلوبة. اختر الأعمدة التي تحتاج إليها بشكل فعّال.

باستخدام هذه التحسينات، يمكن أن يكون لديك استعلام MySQL أكثر كفاءة وأداء أفضل.

المزيد من المعلومات

لتحسين فعالية استعلام MySQL الخاص بك، يمكنك اعتبار استخدام مؤشرات البحث الكامل (Full-Text Indexing) إذا كنت تقوم بالبحث في نصوص طويلة، مثل الأسماء والشركات. يسمح لك الاستفادة من ميزات البحث الكامل للعثور على نتائج تلائم النص المطلوب بشكل أكثر دقة وسرعة.

قد ترغب أيضاً في تقسيم الاستعلام إلى جمل SQL صغيرة ومفهومة لتحقيق أقصى قدر من القراءة والصيانة. يمكن استخدام الوسوم التعبيرية لتحسين قابلية قراءة الاستعلام.

sql
SELECT DISTINCT u.id AS userId, u.type AS userType FROM User AS u LEFT JOIN Personal AS p ON u.id = p.userId LEFT JOIN Company AS c ON u.id = c.userId WHERE (p.realName LIKE '%adf%' AND u.type = 1) OR (c.name LIKE '%grge%') LIMIT 0, 10000;

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

أيضًا، يمكن أن يكون تفعيل بعض خيارات الأمان والأمان بشكل عام مفيدًا، مثل تجنب استخدام الدوال المعتمدة على المستخدم وضبط صلاحيات المستخدمين بشكل دقيق.

في الختام، يتطلب تحسين أداء قاعدة البيانات فحصًا شاملاً للبنية والاستعلامات وتكوين الخادم لضمان تحقيق أقصى أداء.

مقالات ذات صلة

زر الذهاب إلى الأعلى

المحتوى محمي من النسخ !!