Таблица содержит 18млн записей, но не думаю, что это прямо таки неподъемная схема для субд (?)
это от сервера зависит. кроме pk индексы есть? или пробовал добавлять, например, unique id + artist_id?
зачем нужна проверка "recording.id > 0", вы авто инкримент не используете?
зачем сортировать по id если значения все равно записаны в данном порядке благодаря авто инкрименту.