I want to have a fast lookup based on if two columns are equal. I tried to use a computed column with an index, but SQL Server doesn't seem to use it. If I just use a statically populated bit column with an index, I get the expected index seek. Seems there is some other questions like this out there, but none focused on why an index wouldn't be used. Test Table: CREATE TABLE dbo.Diffs ( Id int NOT NULL IDENTITY (1, 1), DataA int NULL, DataB int NULL, DiffPersisted AS isnull(convert(bit, case when [DataA] is null and [DataB] is not null then 1 when [DataA] <> [DataB] then 1 else 0 end), 0) PERSISTED , DiffComp AS isnull(convert(bit, case when [DataA] is null and [DataB] is not null then 1 when [DataA] <> [DataB] then 1 else 0 end), 0), DiffStatic bit not null, Primary Key (Id) ) create index ix_DiffPersisted on Diffs (DiffPersisted) create index ix_DiffComp on Diffs (DiffComp) create index ix_DiffStatic on Diffs (DiffStatic) And the Query: select Id from Diffs where DiffPersisted = 1 select Id from Diffs where DiffComp = 1 select Id from Diffs where DiffStatic = 1 And the resulting execution plans: [![Execution Plan][1]][1] [1]: https://i.sstatic.net/iEoxR.jpg