Почему MyISAM медленне MyISAM?

300
26 ноября 2016, 20:24

Один и тот же запрос в таблицу с 3млн строк

SELECT order_id, x as x1,y as y1, MAX(x) as x2, MAX(y) as y2  FROM `items` where order_id>0 group by order_id LIMIT 5000  

выдает время выполнения:

для MyISAM (только первичный индекс) 0.11 сек
для MyISAM (только первичный индекс) 0.29 сек
для MyISAM (индексы по всем полям) 1.17 сек

UPD
для MyISAM при добавлении индекса по order_id запрос уменьшился с 0.11 сек до 0.0026 сек!!! полный провал MyISAM...

Answer 1

1 и 2 запросы не используют индексы. Key = null Вы строите рабочие , но некорректные запросы с точки зрения SQL (работает в вашем случае потому что это MySQL , видимо запущенный по умолчанию в нестрогом режиме). Если вы хотите сравнить производительность, то уберите GROUP BY для начала и в Where используйте только колонку с первичным индексом. По факту ваш текущий тест не показывает ровным счетом ничего. GROUP BY сверх того еще использует дополнительные индексы оптимизации, о которых можно почитать в литературе (loose index scan)

Учите теорию!

READ ALSO
Как использовать mysql в django?

Как использовать mysql в django?

Использую django с python3При pip install mysql-python выдает ошибку: Command "python setup

432
Как запретить UPDATE если не совпали интервалы?

Как запретить UPDATE если не совпали интервалы?

В таблице строки сгенерированы изначально (список пин-кодов) и далее только обновляются два поля: статус status (с 0 на 1 и обратно) и поле номер...

338
ON DUPLICATE KEY UPDATE в Medoo.in

ON DUPLICATE KEY UPDATE в Medoo.in

Сложно мне изменить класс, опыта малоКак бы добавить в Medoo возможность обновлять данные через ON DUPLICATE KEY UPDATE

461