I'm gonna share my experience related to this issue, i hope it could help someone who would have been in the same situation.
We were working on an staged instance, all was ready to go to production.
So we duplicated everything on the prod env and launched some SQL truncates in order to delete every dummy orders, reviews, etc.. you get the idea.
After some final tests, we realized that our products "stock qty" where far different from product "salable qty". The SQL View seemed to work fine, so we investigated deeper. Turns out we missed a SQL table in our truncate instructions :
TRUNCATE TABLE `inventory_reservation`;
This bad girl was containing each "not shipped but reserved products" from past orders.
Of course don't forget to reindex stuff :