تحديد حجم نتيجة SQL في KB
سؤال
آمل أن أجد كيف يمكنني الحصول على حجم كيلو بايت للنتيجة المحددة في Oracledb. أنا لست sysadmin ، ولكن في كثير من الأحيان أدير استعلامات تعود إلى أكثر من 100 ألف صف ، وسأحتاج إلى إيجاد طريقة لتحديد حجم كيلو بايت الإجمالي. شكرا لك
المحلول
في SQL*Plus:
SET AUTOTRACE ON
SELECT *
FROM emp
WHERE rownum <= 100;
27 recursive calls
0 db block gets
19 consistent gets
4 physical reads
0 redo size
**11451 bytes sent via SQL*Net to client**
314 bytes received via SQL*Net from client
8 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
100 rows processed
يتطلب استخدام Autotrace دور Plustrace ، والذي لم يتم منحه افتراضيًا. اكتشف المزيد.
نصائح أخرى
بشكل عام ، يمكنك استبدال قائمة الأعمدة الخاصة بك بـ count(*)
لإرجاع عدد الصف.
لست متأكدًا من مدى جودة ذلك على استفسارات معقدة حقًا مع العديد من الوصلات ، ولكن ، بالنسبة للاستعلامات الأكثر بساطة ، يجب أن يكون الأمر جيدًا. يحل محل:
select a,b,c from t where a > 7;
مع
select count(*) from t where a > 7;
سيعطيك ذلك عدد الصفوف قبل تشغيل الاستعلام الحقيقي. فقط ضع في اعتبارك أن هناك فرصة لأن تتغير البيانات بين استعلام العد والاستعلام الحقيقي (نأمل ألا يكون كثيرًا). ستتيح لك معرفة خصائص البيانات تقريبًا كيلوبايت تقريبًا من عدد الصفوف.