Viewing the Execution plan, i see \"column A\" in the Output List. The operation is an Index Scan on a Non-Clustered Index : \"IX_name\"
When i see the definition of
If the table itself is clustered1, then all secondary indexes contain a copy of the clustering key2 (a key that determines the physical order of rows in the clustered table).
The reason: rows in a clustered table are physically stored within a B-tree (not table heap), and therefore can move when B-tree nodes get split or coalesced, so the secondary index cannot just contain the row "pointer" (since it would be in danger of "dangling" after the row moves).
Often, that has detrimental effect on performance3 - querying through secondary index may require double-lookup:
However, if all you want are the fields of the clustering key, only the first lookup is needed.
1 Aka "clustered index" under MS SQL Server.
2 Usually, but not necessarily a PRIMARY KEY under MS SQL Server.
3 It is unfortunate that clustering is on by default under MS SQL Server - people often just leave the default without fully considering its effects. When clustering is not appropriate, you should specify NONCLUSTERED keyword explicitly to turn it off.
Internally, a non-clustered index contains all key columns of the clustered key. This is to support the key lookup operation and to ensure that internally each index row has a unique key. For heaps each NCI contains the row bookmark for the same reasons.