Показать три товара и отдельно оценить хранение

Фактические данные получены через расширение interbase через локальный Services API Firebird. Собственные учебные базы и промежуточные резервные файлы удалены после наблюдений.

Наблюдаемый результат программы
НаблюдениеРезультат
Всего синтетических SKU120
Остаток от 1 до 2 включительно48
Строк передано экрану3
На экранеSKU-001 / 1; SKU-006 / 1; SKU-011 / 1
Таблица физического отчётаLAB_ITEMS
Индекс физического отчётаIX_FB163_QTY
Статистика страниц и узлов полученада
Все 120 строк выгружены в PHPнет
Использование индекса запросом доказанонет
Строки и дополнительные наблюдения
{
    "physical_statistics": {
        "data_pages": 2,
        "index": "IX_FB163_QTY",
        "depth": 1,
        "leaf_pages": 1,
        "nodes": 120
    },
    "selected_items": [
        {
            "id": 1,
            "title": "SKU-001",
            "qty": 1
        },
        {
            "id": 6,
            "title": "SKU-006",
            "qty": 1
        },
        {
            "id": 11,
            "title": "SKU-011",
            "qty": 1
        }
    ],
    "total_fixture_rows": 120,
    "matching_rows": 48,
    "screen_sql": "SELECT ID,TITLE,QTY FROM LAB_ITEMS WHERE QTY BETWEEN 1 AND 2 ORDER BY QTY,ID ROWS 3",
    "statistics_request": {
        "action": "IBASE_STS_DATA_PAGES",
        "argument": "IBASE_STS_IDX_PAGES"
    },
    "report_excerpt": " \nDatabase \"[каталог учебного профиля]\\[учебный файл]\" \nGstat execution time Sat Nov  7 16:04:49 2026 \n \nDatabase header page information: \n\tFlags\t\t\t0 \n\tGeneration\t\t27 \n\tSystem Change Number\t0 \n\tPage size\t\t8192 \n\tODS version\t\t13.1 \n\tOldest transaction\t14 \n\tOldest active\t\t15 \n\tOldest snapshot\t\t15 \n\tNext transaction\t15 \n\tSequence number\t\t0 \n\tNext attachment ID\t3 \n\tImplementation\t\tHW=AMD\/Intel\/x64 little-endian OS=Windows CC=MSVC \n\tShadow count\t\t0 \n\tPage buffers\t\t0 \n\tNext header page\t0 \n\tDatabase dialect\t3 \n\tCreation date\t\tNov 7, 2026 13:04:48 \n\tAttributes\t\tforce write \n \n    Variable header data: \n\tDatabase GUID:\t{F80C2C7E-2579-4A01-BA5B-DAEDD5DA14E4} \n\tSweep interval:\t\t20000 \n\t*END* \n \n \nDatabase file sequence: \nFile [каталог учебного профиля]\\[учебный файл] is the only file \n \nAnalyzing database pages ... \nLAB_ITEMS (128) \n    Primary pointer page: 224, Index root page: 225 \n    Pointer pages: 1, data page slots: 2 \n    Data pages: 2, average fill: 32% \n    Primary pages: 2, secondary pages: 0, swept pages: 0 \n    Empty pages: 0, full pages: 0 \n    Fill distribution: \n\t 0 - 19% = 1 \n\t20 - 39% = 0 \n\t40 - 59% = 1 \n\t60 - 79% = 0 \n\t80 - 99% = 0 \n \n    Index IX_FB163_QTY (1) \n\tRoot page: 235, depth: 1, leaf buckets: 1, nodes: 120 \n\tAverage node length: 3.06, total dup: 115, max dup: 23 \n\tAverage key length: 2.03, compression ratio: 0.79 \n\tAverage prefix length: 1.55, average data length: 0.05 \n\tClustering factor: 10, ratio: 0.08 \n\tFill distribution: \n\t     0 - 19% = 1 \n\t    20 - 39% = 0 \n\t    40 - 59% = 0 \n\t    60 - 79% = 0 \n\t    80 - 99% = 0 \n \n    Index RDB$PRIMARY1 (0) \n\tRoot page: 230, depth: 1, leaf buckets: 1, nodes: 120 \n\tAverage node length: 4.02, total dup: 0, max dup: 0 \n\tAverage key length: 3.00, compression ratio: 0.82 \n\tAverage prefix length: 1.47, average data length: 1.01 \n\tClustering factor: 2, ratio: 0.02 \n\tFill distribution: \n\t     0 - 19% = 1 \n\t    20 - 39% = 0 \n\t    40 - 59% = 0 \n\t    60 - 79% = 0 \n\t    80 - 99% = 0 \n \nPHPMAN163_OWNER (129) \n    Primary pointer page: 231, Index root page: 232 \n    Pointer pages: 1, data page slots: 1 \n    Data pages: 1, average fill: 1% \n    Primary pages: 1, secondary pages: 0, swept pages: 0 \n    Empty pages: 0, full pages: 0 \n    Fill distribution: \n\t 0 - 19% = 1 \n\t20 - 39% = 0 \n\t40 - 59% = 0 \n\t60 - 79% = 0 \n\t80 - 99% = 0 \n \nGstat completion time Sat Nov  7 16:04:49 2026 \n \n",
    "gstat_is_not_a_transaction_snapshot": true,
    "index_presence_is_not_query_plan": true,
    "physical_numbers_not_guessed_before_run": true
}

Самостоятельный запуск создаёт result.json с данными и metrics.json с проверками рядом с example.php.