Why does adding a column to a MySQL table take incredibly long?
Adding a column in MySQL 5.6 requires the full table to be rebuilt.  This becomes online in MySQL 8.0 though, provided the column is at the end of the table! The MySQL manual covers this under 14.13.1 Online DDL Operations (search in page for "Adding a column"):


  
  Rebuilds Table?: Yes
  


Adding secondary indexes (i.e. not the primary key) should always be delayed until the last step so they can be sorted and optimally created. In the manual page I linked to, any operation that says In Place=No it will make sense to drop indexes first as well.