Запрос простой
Собственно, вопрос - возможно ли в принципе здесь убрать временную таблицу? Без денормализации, понятное дело.
Дальше индекса по [order_date, id] (который не работает и в осмысленности которого я сомневаюсь) у меня мысль не идет.
10.1.26-MariaDB if that matters.
Код:
SELECT t.device, COUNT(1) FROM `order` o
INNER JOIN traffic t ON o.id = t.order_id AND t.sort = 1
WHERE o.order_date BETWEEN '2018-02-16 00:00:00' AND '2018-02-22 23:59:59'
GROUP BY t.device
Код:
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: o
type: range
possible_keys: PRIMARY,order_date_idx,
key: order_date_idx
key_len: 5
ref: NULL
rows: 520748
Extra: Using where; Using index; Using temporary; Using filesort
*************************** 2. row ***************************
id: 1
select_type: SIMPLE
table: t
type: ref
possible_keys: IDX_65E3C3DF8D9F6D38
key: IDX_65E3C3DF8D9F6D38
key_len: 5
ref: o.id
rows: 1
Extra: Using where
Код:
{
"query_block": {
"select_id": 1,
"filesort": {
"temporary_table": {
"function": "buffer",
"table": {
"table_name": "o",
"access_type": "range",
"possible_keys": [
"PRIMARY",
"order_date_idx",
],
"key": "order_date_idx",
"key_length": "5",
"used_key_parts": ["order_date"],
"rows": 520748,
"filtered": 100,
"attached_condition": "(o.order_date between '2018-02-16 00:00:00' and '2018-02-22 23:59:59')",
"using_index": true
},
"table": {
"table_name": "t",
"access_type": "ref",
"possible_keys": [
"IDX_65E3C3DF8D9F6D38",
],
"key": "IDX_65E3C3DF8D9F6D38",
"key_length": "5",
"used_key_parts": ["order_id"],
"ref": ["o.id"],
"rows": 1,
"filtered": 100,
"attached_condition": "(t.sort = 1)"
}
}
}
}
}
Собственно, вопрос - возможно ли в принципе здесь убрать временную таблицу? Без денормализации, понятное дело.
Дальше индекса по [order_date, id] (который не работает и в осмысленности которого я сомневаюсь) у меня мысль не идет.
10.1.26-MariaDB if that matters.