jwcolby
jwcolby at colbyconsulting.com
Thu Jun 24 07:22:10 CDT 2010
Mark,
I think that you can't index a binary because it is a bit in an integer and SQL Server treats it
differently than regular fields.
>But I have to also query my brain to ask was that "Indexes with an even spread of binary values eg
50 yes and 50 no".
As I understand it is that this is also true. ANY index only gets used if you are selecting a value
or values with a small percent of the total values.
In my case this is almost always true. There is always a T or nothing. The T values are almost
always a small percent of the total, only 5 or 10 percent. I do have one specific field that has
about 40% T though. That would be a good test to see if it uses the index.
John W. Colby
www.ColbyConsulting.com
Mark Breen wrote:
> Hello John,
>
> Glad that your times have reduced to five seconds, I bet you jumped with joy
> at that.
>
> I had previously understood that indexes on fields with binary values were
> not beneficial. But I have to also query my brain to ask was that "Indexes
> with an even spread of binary values eg 50 yes and 50 no.
>
> Anyway, I suppose in the end, we all try it one way and then try it another
> and pick the one thats best.
>
> I am still curious about your cast as to whether Y and Null is better than 1
> and 0 as a bit field. It should be as fast, otherwise whats the point of
> bit.
>
> Thanks
>
> Mark
>
>
> On 23 June 2010 13:45, jwcolby <jwcolby at colbyconsulting.com> wrote:
>
>> Mark Breen,
>>
>> I think it was you that mentioned that an index on a field that only
>> contained a single value ('Y'
>> in my case) would not be used. I can report that it definitely is used. I
>> have been slowly
>> converting my fields with either a 'Y' or a ' ' (space), replacing the ' '
>> with null. I tried to do
>> a count / group by to discover how many values I had in one of my fields
>> and without the index it
>> had not finished after about 8 minutes. With an index it took five
>> seconds.
>>
>> In fact it took less time to build the index than it took to count without
>> the index, which is
>> pretty strange if you ask me.
>>
>> I use these "Y / nothing" fields as criteria in where clauses for the
>> orders that the client sends
>> me. I always generate cover indexes on the order selection fields before
>> running the order because
>> it so dramatically reduces the time to select the resulting order records.
>>
>> --
>> John W. Colby
>> www.ColbyConsulting.com
>> _______________________________________________
>> dba-SQLServer mailing list
>> dba-SQLServer at databaseadvisors.com
>> http://databaseadvisors.com/mailman/listinfo/dba-sqlserver
>> http://www.databaseadvisors.com
>>
>>