optimize_and_compare_chain
< و <= و > و >= و = وأي مزيج منها. على سبيل المثال، سيصبح (a < b) AND (b < c) AND (c < 5) بالشكل (a < b) AND (b < c) AND (c < 5) AND indexHint(b < 5) AND indexHint(a < 5). تُغلَّف المقارنات المشتقة بـ indexHint: فهي تشارك في تحليل الفهارس (المفتاح الأساسي ومفتاح التقسيم وفهارس التخطي) وتقلّص مجموعة القراءة، لكنها لا تكلّف شيئًا لكل صف ولا تؤثر في PREWHERE. تظل المقارنة المشتقة عبر تعبيرات من جداول مختلفة قابلة للتنفيذ ((t1.a < t2.b) AND (t2.b < 5) يستنتج الشرط العادي t1.a < 5): وهي الشرط الوحيد الذي يمكن دفعه إلى ما دون عملية الربط، حيث يرشّح أحد مدخلات الربط التي لا تستطيع السلسلة الأصلية الوصول إليها. تُضاف أيضًا المقارنات المشتقة التي تتناقض مع شرط موجود كشروط عادية، بحيث تُختزل AND إلى false.
optimize_and_compare_chain_max_hash_work
optimize_and_compare_chain أثناء تحليل الاستعلام، وتُقاس بعدد عُقد شجرة الاستعلام التي تُحسب لها قيمة hash بواسطة getTreeHash (وهي الكلفة الأساسية لهذا التحسين). وبمجرد أن يحسب الاستعلام قيمة hash لأكثر من هذا العدد من العُقد أثناء تطبيق التحسين، يتوقف عن تطبيقه على بقية الاستعلام. يحدّ هذا من زمن التحليل للاستعلامات التي تحتوي على سلاسل AND كبيرة جدًا أو كثيرة جدًا من المقارنات، حيث يمكن لهذا التحسين، بخلاف ذلك، أن يهيمن على التحليل من دون أن يحقق أي تبسيط. ويظل الإيقاف المبكر آمنًا دائمًا: فهو يعني فقط الاستغناء عن تحسين، ولا يغيّر النتائج مطلقًا. اضبطه على 0 لتعطيل الميزانية (غير محدود).