سؤال

أنا أعمل على استعلام لموقع إخباري ، والذي سيجد المحتوى المميز للعرض على الصفحة الرئيسية الرئيسية. يتم تمييز المحتوى المميز بهذه الطريقة على أنه "محتوى متميز" ، ويتم ترتيبه في جدول مميز بواسطة "الصفحة الرئيسية". لدي حاليًا الإخراج المطلوب ، لكن الاستعلام يعمل في أكثر من 3 ثوانٍ ، وهو ما أحتاج إلى تقليصه. كيف يمكن للمرء تحسين استعلام مثل الذي يليه؟

تعديل: تجسيد العرض كل دقيقة كما هو مقترح ، وصولاً إلى 0.4 ثوانٍ: Genacodicetagpre

يؤدي هذا إلى إرجاع جميع ميزات الصفحة الرئيسية بالترتيب ، متبوعًا بمحتوى مميز آخر مرتب حسب التاريخ.
الشرح يبدو كالتالي: Genacodicetagpre

والملف الشخصي كالتالي: Genacodicetagpre

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

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

تجمع طريقة عرض العلامات العلامات والجدول العلائقي لاستعادة قائمة العلامات وفقًا لـ item_type و item_id ، لكن طرق العرض الأخرى كلها عروض بسيطة لجدول واحد.

التحرير: مع العرض الفعلي ، يبدو أن العقبة الأكبر هي خطوة "النسخ إلى الجدول المؤقت". بدون طلب الإخراج ، يستغرق الأمر 0.0025 ثانية (أفضل بكثير!) ولكن الإخراج النهائي لا يحتاج إلى ترتيب. هل هناك أي طريقة لتحسين أداء تلك الخطوة أو الالتفاف حولها؟

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

تحرير: أحجام الجداول ، كمرجع:
علاقات العلامات: 197.411
العلامات: 16897
القصص: 51801
الصور: 28383
الفيديوهات: 2408
المميز: 13

هل كانت مفيدة؟

المحلول

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

إذا كان لديك خيار تغيير بنية قاعدة البيانات الخاصة بك ، فأقترح دمج الجداول الثلاثة للرمز الترميزي العام ، ورمز العلامة الترميزية العامة ، ورمز الترقيم العام في واحد ، إذا كانا متشابهين جدًا كما يبدو (إضافهما رمز علامة ترميز عام) للتمييز التسجيلات؛ سيؤدي هذا إلى إزالة كل من الاستعلام الفرعي والاتحاد.

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

إنها مشكلة صعبة للغاية دون معرفة بنية الجدول بالكامل وإعادة تقسيم بياناتك!

هناك خيار آخر ، لا يتضمن إدخال تعديلات على قاعدة البيانات الحالية (خاصة إذا كانت قيد الإنتاج بالفعل) ، وهو "تخزين" هذه المعلومات في جدول آخر ، والذي سيتم تحديثه بشكل دوري بواسطة وظيفة cron.

يمكن إجراء التخزين المؤقت على مستويات مختلفة ، إما على الاستعلام الكامل أو على الأجزاء الفرعية منه (طرق العرض المستقلة ، أو الاتحادات الثلاثة المدمجة في جدول ذاكرة تخزين مؤقت واحد ، وما إلى ذلك)

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top