I have a rather large database that I'm loading up in SQL Server (2005). It's approximately 300 million rows. We are going to be running a lot of queries on this database. Nothing but counts & selects. No updates or deletes. The problem I have is that some of the fields have multiple values in the field. For instance, one field my be your GlockTalk code that looks something like DDDDDDDDGAAC. In this case, DDDDDDDD might be the date you registered. G would be your Gender. AA would be your Age. C would be a true/false flag of whether you are a contributor. So, an actual GlockTalk code might look like 20011215M33F... meaning you registered 12/15/2001, are Male, 33 years old, and not a contributor. Many of our queries are going to be things like select * where GlockTalkCode LIKE '%M%'. So, if there is an M anywhere in the GlockTalkCode, that record gets returned. We cant use a substring to look for the M in the 9th position because the registration day may not be present, and the M may be in the first position, etc. If substring would provide a performance increase I could write a program to read all of the data in and format it properly, so instead of a blank date, it would just be like 00000000M33F so gender would always be in the 9th position. Obviously this would be a lot of work and processing and isn't the first choice. Does anyone have suggestions for ways to speed up counts/selects for fields like this? I've indexed those fields, and performance isn't horrible when selecting on a single field... but when you start doing the same thing on multiple fields like that in a single query performance reeeaaally dies.