recreate row IDs in sorted table
ok, I found a great solution here by adding one more column to my table and label ordered items:

alter table `my_table` add `ocid` bigint after `counter`;
set @neword = 0;
update `my_table` set `ocid` = (@neword := @neword + 1)
order by `counter` desc;


and it's worked:

select id,keyword,counter,ocid from spanish order by `ocid` asc limit 0,15;
+-----+---------+---------+------+
| id  | keyword | counter | ocid |
+-----+---------+---------+------+
|  33 | de      | 6786409 |    1 |
|  43 | ,       | 5633255 |    2 |
|  45 | .       | 4504309 |    3 |
|  41 | la      | 3447327 |    4 |
|  97 | '       | 3014551 |    5 |
|  52 | en      | 2748250 |    6 |
| 120 | el      | 2490996 |    7 |
| 316 | y       | 2200112 |    8 |
|  10 | :       | 1578205 |    9 |
|  28 | que     | 1542144 |   10 |
|   2 | a       | 1494838 |   11 |
|  88 | (       | 1375893 |   12 |
| 220 | )       | 1373788 |   13 |
|   6 | los     | 1290613 |   14 |
|  30 | del     | 1226805 |   15 |
+-----+---------+---------+------+
15 rows in set (1.12 sec)