WHERE person_id = 123 AND country_code = 'AT'
Использовать
INDEX(person_id, country_code) -- in EITHER order!
Разница no в скорости или пробела для порядка столбцов индекса в этот случай.
Да, у MyISAM было «сжатие индекса», но оно больше не используется.
. Кардинальность имеет значение только для сравнения отдельных индексов, а не для упорядочения столбцов в составной индекс. То есть
INDEX(person_id) -- is better than INDEX(country_code)
Но ни один из них не так хорош, как составной индекс.
Для
WHERE person_name LIKE 'James%' AND country_code = 'UK'
лучшим индексом является
INDEX(country_code, person_name) -- in THIS order!
Порядок в
WHERE
не влияет на оптимизацию.Дополнительные советы и обсуждение: http://mysql.rjweb.org/doc.php/index_cookbook_mysql
Да, потому что в конце вашего процесса, после анализа и проверки, вы присоединяете слушателей событий. Это должно быть сделано в первую очередь, перед началом анализа. Потому что эти события (в файле, в случае ошибки, в конце) происходят во время синтаксического анализа, а не после него.
form.on('file',...) // First, attach your listeners
.on('error', ...)
.on('end', ...);
form.parse(req) // then start the parsing