I was reading this question MySQL - why not index every field? and decided to do some tests.
Having two equivalent tables (a and b), each one with 5.000.000 rows and 3 columns (int, int, varchar), I indexed all the columns on table b and just indexed one column (primary key) on table a.
Results were as follow:
Edit: times are the same as the below ones for rows changed/unchanged.
mysql> update a set c = '1000000' where c = '1000000';
Query OK, 0 rows affected (2.13 sec)
Rows matched: 1 Changed: 0 Warnings: 0
mysql> update b set c = '1000000' where c = '1000000';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0
Now, this is totally the opposite of what I was expecting after reading the answers to the question.
Is there any "benchmarkable" drawback to not index every column of a table?
Edit: problem was that every tuple in the table had an unique value and updating a single indexed and unique row was quick enough to get the 0.00 mark. However, when I updated subsets of rows like Flimzy and Searlea specified, updating non indexed columns were quicker than updating indexed one, like it should be.
Results in case you want to see them:
mysql> update a set b = 98;
Query OK, 5000002 rows affected (10.85 sec)
Rows matched: 5000002 Changed: 5000002 Warnings: 0
mysql> update b set b = 98;
Query OK, 4988890 rows affected (1 min 32.69 sec)
Rows matched: 5000001 Changed: 4988890 Warnings: 0