Пошерстив просторы интернета, наткнулся на страницу:
https://vk.cc/8eiMSw
Оттуда взял пример кода, немного поколдовав. Получилось:
$database->query("SELECT @i:=0, @j:=0");
$database->query("SELECT @i:=@i+1, @j:=IF(id=$id,@i,@j) FROM `table` WHERE 1 ORDER BY col1 DESC, col2 DESC, col3 DESC, id ASC");
$position = $database->query("SELECT @j AS position");
Не сталкивался с подобными проблемами, и не уверен на 100% на счет этого кода. Но пока все тесты показывают, что он работает, и делает это быстро.. Если вдруг что-то изменится и обнаружатся какие-либо ошибки - добавлю.