Как избирательно является столбцом product_id
?То есть, должен ли он фильтровать данные, чтобы получить 50% строк, 5% строк, 0,5% строк?
Если оно низкое (менее 0,5%), нет причины, по которой этот запрос долженбудьте медленными, пока у вас есть соответствующие индексы.Вы выбираете несколько строк, и запрос должен быть быстрым.
Следующий индекс может ускорить ваш запрос:
create index ix1 on cartitem (product_id, receipt_id, cartitem_id);
В другом случае, если он не является действительно избирательным, тогдазапрос будет медленным, так как вы будете обрабатывать много строк.
Примечание : столбец cartitem_id
вообще не используется в подзапросах.Почему вы выбираете это?Чтобы ускорить запрос, возможно, вам следует удалить его (из запроса и из нового индекса).