use an Index correctly to optimize queries
Your query is no faster with the index because SQL Server has determined that it would be more efficient to do a Clustered Index Scan, than use the IX_ActCost_ScenarioID that you have defined and perform a Key Lookup to retrieve the extra data needed.

As you've only defined the index on ScenarioID, with no INCLUDE columns, each extra column you wish to return from the query would need to be retrieved from the Clustered Index. On 50,000+ rows, this simply wouldn't be efficient, hence the index is ignored.

Firstly, you need to ask yourself if you really need ALL columns to be returned. I somehow doubt you do (the ID columns for example), but I may be wrong.  In any case, you should always define the column list rather than using *.

SELECT
 ActID, 
 ActCostTypeID,
 Description,
 Cost,
 &lt;rest_of_columns...&gt;
FROM dbo.ActCosts 
WHERE ScenarioID = 456;


Notes:
1. Don't avoid the schema prefix
2. Avoid using SELECT *  

You then need to include the extra columns returned in IX_ActCost_ScenarioID:

CREATE NONCLUSTERED INDEX [IX_ActCost_ScenarioID] ON [dbo].[ActCost] ([ScenarioID] ASC)
INCLUDE ( &lt;list_all_other_columns_returned&gt; );
GO