To help resolve this problem across the board, for all your queries, you really need to re-cluster the CommoditySupplier table. This is a classic case of the "default clustering by identity column" problem. Unfortunately, since it's such a large table, this will take quite a while. You'd almost certainly want to try it first in a test environment anyway. Change the clustered index as shown below, then retry the query. Review the query plan to make sure SQL is searching the Commodity table first, then doing (joined) seeks on the CommoditySupplier table.
--first, drop all nonclustered indexes (if any)
ALTER TABLE dbo.CommoditySupplier DROP CONSTRAINT PK_CommoditySupplier;
CREATE UNIQUE CLUSTERED INDEX CL_CommoditySupplier ON dbo.CommoditySupplier
( CommodityID, SuppliedID /*, CommoditySupplierID */
/*Add CSID *ONLY* IF *REQUIRED* TO MAKE THE FIRST TWO COLUMNS UNIQUE*/ )
WITH ( /*DATA_COMPRESSION = PAGE,*/ FILLFACTOR = 98, SORT_IN_TEMPDB = ON )
--re-create the PK, but nonclustered
ALTER TABLE dbo.CommoditySupplier ADD CONSTRAINT PK_CommoditySupplier PRIMARY KEY NONCLUSTERED ( CommoditySupplierID ) WITH ( /*DATA_COMPRESSION = ROW,*/ FILLFACTOR = 99, ... ) ON [...same_fg_name...];
--recreate all nonclustered indexes (if any)
SQL DBA,SQL Server MVP(07, 08, 09) Prosecutor James Blackburn, in closing argument in the Fatal Vision murders trial: If in the future, you should cry a tear, cry one for them [the murder victims]. If in the future, you should say a prayer, say one for them. And if in the future, you should light a candle, light one for them.