سكربتات أمثلة Oracle لـ«الترتيب والتجميع»
يحتوي هذا القسم على شيفرة create وinsert وPL/SQL لتشغيل أمثلة الفصل 6الترتيب والتجميع في قاعدة بيانات Oracle 11gR2.
order by المفهرس
SELECT sale_date, product_id, quantity
FROM sales
WHERE sale_date >= TRUNC(sysdate) - INTERVAL '1' DAY
ORDER BY product_id
وجمع إحصاءات جديدة ممارسة جيدة بعد تغيير الفهارس:
BEGIN
DBMS_STATS.GATHER_TABLE_STATS(null, 'SALES',
METHOD_OPT=>'for all indexed columns', CASCADE => true);
END;
/
group by المفهرس
توجد مشكلة خاصة في قاعدة بيانات Oracle (من 11g إلى 19c على الأقل) تظهر عند ترتيب النتيجة المجمَّعة بترتيب الفهرس المعاكس:
SELECT product_id, sum(eur_value)
FROM sales
WHERE sale_date = TRUNC(sysdate) - INTERVAL '1' DAY
GROUP BY product_id
ORDER BY product_id DESC;
مع أنها تستطيع استخدام الفهرس عند الترتيب بترتيب الفهرس:
SELECT product_id, sum(eur_value)
FROM sales
WHERE sale_date = TRUNC(sysdate) - INTERVAL '1' DAY
GROUP BY product_id
ORDER BY product_id ASC;
ولا يوجد حل معروف لهذه المشكلة.