Clustered index is not effective while scanning a huge amount of rows.
The thing is that if SQL Server could theoretically use a particular non-clustered index but the Optimiser estimates there will be 'too many' bookmark-lookups then said index will be ignored. However, if all selected columns are accessible directly from the
index, there'll be no need for a bookmark-lookup.
In your case the fact that you're accessing the data via "clustered index seek" is very promising. It will be very hard to improve on its performance. A non-clustered index including all selected columns may be slightly faster, but only because the
raw data is a little less. (But don't forget the cost of increased insert/update time.)
However, you should check the detail...
If you're using a composite key and the seek is actually only on the beginning of the key, you might not be so lucky. You may find the seek is only narrowing down to 500,000 rows and is then searching that based on other criteria. In this case experiment with
some non-clustered indexes.
The clustered index seek itself may be fine; but if it is being done 100,000 times in your query because some other aspect is inefficiently returning too many rows - then you won't gain much by improving the performance of the clustered index seek.
Finally, to elaborate on davek's comment: "cost is relative". Just because the clustered is 77% of your query cost doesn't mean there's a problem. It is possible to write a trivial 1 table query that returns a sinlge row and clustered index seek cost
at 100%. (But of course, being the only 'work' done, it will be 100% of the work... and 100% of instant is still instant.
Have a look at the following articles:
Effective Clustered Indexes
14 SQL Server Indexing Questions You Were Too Shy To Ask