is there any need to index b again as it is already a under primary
If you have index on (a,b) and a query with b = ? then that query can't make efficient use of that index. There are DBMS that can make use of the index in a decent way, but mysql is not one of those.