Индексы MySQL: фактический результат

ЗаказПокупательСумма, коп.
121Борис103
124Дина403
127Вера703
130Анна1003

Наблюдавшиеся планы и метаданные

Это данные данного запуска. Стоимость, оценки, способ доступа и время могут измениться. possible_keys означает кандидатов, key — выбранный индекс. Using index и Using index condition имеют разный смысл. Результат запроса проверяется отдельно от выбора оптимизатора.

Обычный EXPLAIN TREE: оценка

-> Limit: 4 row(s)  (cost=9.29 rows=4)
    -> Nested loop inner join  (cost=9.29 rows=20)
        -> Covering index lookup on o using report_page (tenant_id='3', status='paid')  (cost=2.29 rows=20)
        -> Single-row index lookup on c using PRIMARY (id=o.customer_id)  (cost=0.255 rows=1)

EXPLAIN ANALYZE TREE: фактическое выполнение

-> Limit: 4 row(s)  (cost=9.29 rows=4) (actual time=0.0213..0.0241 rows=4 loops=1)
    -> Nested loop inner join  (cost=9.29 rows=20) (actual time=0.0209..0.0237 rows=4 loops=1)
        -> Covering index lookup on o using report_page (tenant_id='3', status='paid')  (cost=2.29 rows=20) (actual time=0.0088..0.0094 rows=4 loops=1)
        -> Single-row index lookup on c using PRIMARY (id=o.customer_id)  (cost=0.255 rows=1) (actual time=875e-6..875e-6 rows=1 loops=4)

Индекс report_page

[
    {
        "COLUMN_NAME": "tenant_id",
        "SEQ_IN_INDEX": 1,
        "COLLATION": "A",
        "IS_VISIBLE": "YES"
    },
    {
        "COLUMN_NAME": "status",
        "SEQ_IN_INDEX": 2,
        "COLLATION": "A",
        "IS_VISIBLE": "YES"
    },
    {
        "COLUMN_NAME": "id",
        "SEQ_IN_INDEX": 3,
        "COLLATION": "A",
        "IS_VISIBLE": "YES"
    },
    {
        "COLUMN_NAME": "customer_id",
        "SEQ_IN_INDEX": 4,
        "COLLATION": "A",
        "IS_VISIBLE": "YES"
    },
    {
        "COLUMN_NAME": "amount_cents",
        "SEQ_IN_INDEX": 5,
        "COLLATION": "A",
        "IS_VISIBLE": "YES"
    }
]

Как читать

Каждый отступ — оператор плана. rows до actual — оценка; actual rows — строки, выданные этим оператором за проход; loops — число его проходов. Не складывайте строки разных уровней как уникальные заказы.

HTML создан PHP CLI и локальным MySQL. Собственные учебные таблицы удалены после сценария. Это сохранённый отчёт, а не подключение к базе сайта.