Most decentralised exchanges do not match buyers with sellers. They hold a pool of two assets and quote a price from the ratio between them. Your trade changes that ratio, which is why large trades in small pools get terrible prices.
This is also why liquidity depth, not the advertised fee, determines your real cost.