تحميل ذاكرة mysql من البحث المباشر في جافا سكريبت

StackOverflow https://stackoverflow.com/questions/9382755

سؤال

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

لديّ php أتجاهل أي مصطلح بحث أقل من 3 أحرف ، ولكن بالإضافة إلى ذلك ، ما الذي يمكنني فعله أيضًا؟

هناك بعض الخيارات هنا: تحسين البحث المباشر في Javascript

لكنني كنت أتساءل عما إذا كان ينبغي عليّ السحب من ورقة xml المخزنة مؤقتًا ، أم أن هناك طريقة ما لتخزين ملف mysql نفسه مؤقتًا.

ما الذي تفعله Google أو بعض المواقع الكبيرة الأخرى التي تعتمد على هذه الميزة بشكل كبير؟

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

المحلول

سأحاول تحسين استعلام SQL بقدر الإمكان:

  • لا حدد *
  • لا JOIN
  • استخدم WHERE في الحقول المفهرسة فقط

في جانب PHP أيضًا:

  • تخزين نتائج البحث في ذاكرة التخزين المؤقت للمصطلحات التي يتم البحث عنها بشكل متكرر (كلما تم تحديث البيانات التي يتم البحث عنها بشكل متكرر ، كانت مدة ذاكرة التخزين المؤقت أقصر) في ملفات نصية عادية
  • استخدم redis ، memcached إن أمكن

أيضًا ، ضع في الاعتبار NoSQL ديسيبل متوازي

و

يعد Zend_Search_Lucene مفيدًا للمواقع ذات حركة المرور المنخفضة / المتوسطة (تفيد التقارير بوجود مشكلات عند القياس)

نصائح أخرى

استخدم محركات الفهرسة لفهرسة بياناتك وتسريع نتائج البحث. مثل: http://sphinxsearch.com/ أو http://lucene.apache.org/core/

قم بإعداد مهمة cron لفهرسة البيانات ، فهناك PHP API لـ sphinx و Zend Framework Module.سرعة الفهرسة للأشياء كثيرًا ، إذا تم استخدامها بشكل صحيح.

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