المعلمات المسماة، التخزين المؤقت وشركة تنمية نفط عمان

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

  •  22-08-2019
  •  | 
  •  

سؤال

إذا لدي بيان SQL معلمات مثل هذا:

SELECT * FROM table WHERE my_field = :field_value

لا أحد يعرف إذا ستعترف PDO هذا (انظر أدناه) وبيان SQL نفسه، واستخدام ذاكرة التخزين المؤقت بدلا من افتراض انها بيان SQL مختلفة تماما:

SELECT * FROM table WHERE my_field = :new_field_value

وهكذا، اعتقد ان السؤال هو: إذا كان اسم التغييرات المعلمة في بيان حدد معلمات ولكن التغييرات أي شيء آخر، وأنا لا يزال الحصول على فائدة أداء التخزين المؤقت؟ أو لا بد لي للتأكد من أن اسم المعلمة يبقى على حاله؟

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

المحلول

إذا كنت تستخدم PDO_MySQL، فإنه يعيد كتابة البيانات المعدة إلى SQL الخام من تلقاء نفسها قبل الخادم حتى يراها، إلا إذا قمت بتعيين PDO::ATTR_EMULATE_PREPARES إلى false.

نصائح أخرى

وينبغي الاعتراف بأنها البيان نفسه منذ يتم التخزين المؤقت بعد أن يتم استبدال معلمات الاستعلام عن طريق القيم

وشركة تنمية نفط عمان ليس لديه مخبأ - مسقل لا. ونعم، فإنه سيتم تخزين الاستعلام "النهائي" في ذاكرة التخزين المؤقت الاستعلام. ليس ذلك فحسب، ولكن إذا كنت تستخدم استخدام البيانات المعدة نفسها عدة مرات، سوف تكسب أنت حسنات زيادة سرعة إضافية، لأن الخلية يمكن تخزين خطة تنفيذ الاستعلام عن هذا البيان.

وأنا لست متأكدا كيف PDO مقابض المعلمات المسماة ولكن إذا كان يستخدم إعداد الخلية البيانات فإنك سوف تحتاج إلى استخدام الخلية 5.1.17 أو في وقت لاحق إذا كنت تريد أن تستخدم ذاكرة التخزين المؤقت الاستعلام.

الخلية سؤال مخبأ

<اقتباس فقرة>   

وقبل الخلية 5.1.17، البيانات المعدة لا تستخدم ذاكرة التخزين المؤقت الاستعلام. بدءا 5.1.17، إعداد البيانات تستخدم ذاكرة التخزين المؤقت الاستعلام في ظل ظروف معينة، والتي تختلف تبعا لطريقة التحضير:

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