- тогда MySQL сумеет воспользоваться range scan (если создан индекс по md5_id. Если индекса нет, а запрос частый - создать). Не использовать запрос в цикле.
Опубликовал в чат internals. Теперь все играют в игру и не могут остановиться. Энтони Феррара(core PHP dev) собирается сделать порт для Android, я думаю сделать оное для IOS.
Смысл в том, что для извлечения первого элемента массива, в случае, если индексы не важны, достаточно связки current+key+unset, что будет намного быстрее. Разумеется, это зависит от контекста (имею ввиду, выборку первого элемента). Однако array_shift, в свою очередь, так же не полностью безопасен при работе с указателями массивов, так как при выходе за границу он сбросит указатель на первый доступный:
Строго говоря, конструкции не эквивалентны, но в большинстве случаев, для извлечения первого элемента (особенно актуально в циклах) - намного корректнее использовать функции указателей.
Это означает, что результат array_shift оказался на 3 порядка хуже, чем вариант с явным удалением ключа. И это - несмотря на то, что функция прекомпилирована. Естественно, чем дальше, тем хуже, так как сложность второго варианта есть O(1)
Нужно не считать это ошибкой, а правильно интерпретировать. Для пользователя неочевидно, что нужен пробел и он будет забывать, когда его ставить, до или после запятой. А так же нужна ли запятая или точка с запятой и т.п.