Вариант 1 (неэффективный):
Ну, можно написать хранимую функцию и вызывать ее при select. SELECT *, update_counter(id) FROM test WHERE id=2. Но все равно будет UPDATE и блокировка.
Вариант 2:
Счетчик эффективнее хранить не в БД, а где-нибудь в memcache, redis, mongo и пр. Разве что можно периодически сохранять его в БД.