سؤال

آمل أن أجد كيف يمكنني الحصول على حجم كيلو بايت للنتيجة المحددة في 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;

سيعطيك ذلك عدد الصفوف قبل تشغيل الاستعلام الحقيقي. فقط ضع في اعتبارك أن هناك فرصة لأن تتغير البيانات بين استعلام العد والاستعلام الحقيقي (نأمل ألا يكون كثيرًا). ستتيح لك معرفة خصائص البيانات تقريبًا كيلوبايت تقريبًا من عدد الصفوف.

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