Я бы, вероятно, начал с удаления этой строки, так как она, похоже, ничего не делает:
INNER JOIN dbo.Listings AS L ON P.accountID = L.accountID
В ListingPhotos
может быть не так много строк, но если в Listings
много строк, то объединение не будет оптимизировано.
Также проверьте свою индексацию, поскольку любое соединение обязательно будет медленным без соответствующих индексов. Хотя вы все равно должны стараться избегать присоединения к символьным полям, обычно это признак того, что данные не нормализованы должным образом.