- minmax: يتتبع الحدين الأدنى والأقصى لقيمة تعبير ما في كل كتلة. وهو مثالي لاستعلامات النطاق على البيانات المرتبة ترتيبًا غير صارم.
- set(N): يتتبع مجموعة من القيم حتى الحجم المحدد N لكل كتلة. وهو فعّال مع الأعمدة ذات عدد القيم المميزة المنخفض داخل الكتل.
- text: ينشئ فهرسًا معكوسًا على بيانات string المُقسّمة إلى tokens، مما يتيح بحثًا نصيًا كاملًا فعّالًا وحتميًا. ويُنصح به للأعمدة التي تحتوي على لغة طبيعية أو نصوص حرة كبيرة عندما تكون هناك حاجة إلى بحث دقيق عن tokens وبحث متعدد المصطلحات قابل للتوسع، بدلًا من الأساليب التقريبية المعتمدة على Bloom filter.
- bloom_filter: يحدد احتماليًا ما إذا كانت قيمة ما موجودة في كتلة، مما يتيح تصفية تقريبية سريعة لعضوية المجموعة. وهو فعّال لتحسين الاستعلامات التي تبحث عن «إبرة في كومة قش»، حيث يلزم العثور على تطابق إيجابي.
- tokenbf_v1 / ngrambf_v1: (Deprecated) متغيرات متخصصة من Bloom filter صُممت للبحث في tokens أو تسلسلات المحارف داخل strings — وهي مفيدة خصوصًا لبيانات السجلات أو حالات استخدام البحث النصي. وقد أُوقفت في إصدارات ClickHouse >= 26.2 لصالح text indexes.
- الأعمدة ذات عدد القيم المميزة الإجمالي المرتفع، لكن بعدد قيم مميزة منخفض داخل الكتلة.
- القيم النادرة ذات الأهمية الكبيرة للبحث (مثل رموز الأخطاء أو المعرّفات المحددة).
- الحالات التي تجري فيها التصفية على أعمدة ليست جزءًا من المفتاح الأساسي مع توزيع موضعي للبيانات.
- اختبر فهارس التخطي على بيانات حقيقية باستخدام استعلامات واقعية. وجرّب أنواع فهارس مختلفة وقيمًا مختلفة لدرجة التحبّب.
- قيّم أثرها باستخدام أدوات مثل send_logs_level=‘trace’ و
EXPLAIN indexes=1لعرض فعالية الفهرس. - قيّم دائمًا حجم الفهرس وكيف يتأثر بدرجة التحبّب. فغالبًا ما يؤدي تقليل درجة التحبّب إلى تحسين الأداء إلى حدّ ما، لأنه يسمح بتصفية المزيد من الحبيبات وتقليل ما يلزم فحصه. ومع ذلك، ومع زيادة حجم الفهرس عند خفض درجة التحبّب، قد يتراجع الأداء أيضًا. قِس الأداء وحجم الفهرس عبر قيم مختلفة لدرجة التحبّب. وهذا مهم بشكل خاص في Bloom filter indexes.
مثال
EXPLAIN indexes = 1:
ViewCount مرتبط بـ CreationDate (وهو مفتاح أساسي) كما هو متوقع — فكلما طالت مدة وجود المنشور، زادت الفرصة المتاحة لمشاهدته.
ALTER TABLE التالية — نضيفه أولًا، ثم “نُجسِّده”.
ViewCount لكل كتلة من الصفوف (granule) في الجدول:
تُظهر إعادة تنفيذ الاستعلام السابق تحسينات كبيرة في الأداء. لاحظ انخفاض عدد الصفوف التي جرى فحصها:
EXPLAIN indexes = 1 استخدام الفهرس.
ViewCount > 10,000,000 في استعلامنا المثال: