<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sqlblog.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Denis Gobo : Tip</title><link>http://sqlblog.com/blogs/denis_gobo/archive/tags/Tip/default.aspx</link><description>Tags: Tip</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>Return Null If A Value Is A Certain Value</title><link>http://sqlblog.com/blogs/denis_gobo/archive/2007/11/06/3229.aspx</link><pubDate>Tue, 06 Nov 2007 18:28:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:3229</guid><dc:creator>Denis Gobo</dc:creator><slash:comments>7</slash:comments><comments>http://sqlblog.com/blogs/denis_gobo/comments/3229.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/denis_gobo/commentrss.aspx?PostID=3229</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/denis_gobo/rsscomments.aspx?PostID=3229</wfw:comment><description>&lt;P&gt;You need to return NULL only if the value of your data is a certain value. How do you do this? There are three different ways. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;NULLIF&lt;/STRONG&gt;&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;DECLARE&lt;/SPAN&gt; @1 &lt;SPAN style="COLOR:#3333ff;"&gt;char&lt;/SPAN&gt;(1)&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;SELECT&lt;/SPAN&gt; @1 =&lt;SPAN style="COLOR:#ff0000;"&gt;'D' &lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;SELECT&lt;/SPAN&gt; &lt;SPAN style="COLOR:#cc33cc;"&gt;NULLIF&lt;/SPAN&gt;(@1&lt;SPAN style="COLOR:#ff0000;"&gt;,'D'&lt;/SPAN&gt;)&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;REPLACE&lt;/STRONG&gt;&lt;BR&gt;This should not really be used, I just added it here to demonstrate that you can in fact use it.&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;DECLARE&lt;/SPAN&gt; @1 &lt;SPAN style="COLOR:#3333ff;"&gt;char&lt;/SPAN&gt;(1)&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;SELECT&lt;/SPAN&gt; @1 =&lt;SPAN style="COLOR:#ff0000;"&gt;'D' &lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;SELECT&lt;/SPAN&gt; &lt;SPAN style="COLOR:#cc33cc;"&gt;REPLACE&lt;/SPAN&gt;(@1,&lt;SPAN style="COLOR:#ff0000;"&gt;'D'&lt;/SPAN&gt;,NULL)&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;CASE&lt;/STRONG&gt;&lt;BR&gt;With case you can test for a range of values. You can test for example for values between A and D. If you reverse the logic then you also don't need to provide the ELSE part since it defaults to NULL anyway.&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;DECLARE&lt;/SPAN&gt; @1 &lt;SPAN style="COLOR:#3333ff;"&gt;char&lt;/SPAN&gt;(1)&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;SELECT&lt;/SPAN&gt; @1 =&lt;SPAN style="COLOR:#ff0000;"&gt;'D' &lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;SELECT&lt;/SPAN&gt; &lt;SPAN style="COLOR:#cc33cc;"&gt;CASE&lt;/SPAN&gt; @1 &lt;SPAN style="COLOR:#3333ff;"&gt;WHEN&lt;/SPAN&gt; &lt;SPAN style="COLOR:#ff0000;"&gt;'D'&lt;/SPAN&gt; &lt;SPAN style="COLOR:#3333ff;"&gt;THEN&lt;/SPAN&gt; NULL &lt;SPAN style="COLOR:#3333ff;"&gt;ELSE&lt;/SPAN&gt; @1 &lt;SPAN style="COLOR:#3333ff;"&gt;END&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR:#009900;"&gt;--No else needed&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;SELECT&lt;/SPAN&gt; &lt;SPAN style="COLOR:#cc33cc;"&gt;CASE&lt;/SPAN&gt; &lt;SPAN style="COLOR:#3333ff;"&gt;WHEN&lt;/SPAN&gt; @1 &amp;lt;&amp;gt; &lt;SPAN style="COLOR:#ff0000;"&gt;'D'&lt;/SPAN&gt; &lt;SPAN style="COLOR:#3333ff;"&gt;THEN&lt;/SPAN&gt; @1 &lt;SPAN style="COLOR:#3333ff;"&gt;END&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;And this is how you test for a range.&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR:#009900;"&gt;--Null&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;DECLARE&lt;/SPAN&gt; @1 &lt;SPAN style="COLOR:#3333ff;"&gt;char&lt;/SPAN&gt;(1)&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;SELECT&lt;/SPAN&gt; @1 =&lt;SPAN style="COLOR:#ff0000;"&gt;'D' &lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;SELECT&lt;/SPAN&gt; &lt;SPAN style="COLOR:#cc33cc;"&gt;CASE&lt;/SPAN&gt; &lt;SPAN style="COLOR:#3333ff;"&gt;WHEN&lt;/SPAN&gt; @1 BETWEEN &lt;SPAN style="COLOR:#ff0000;"&gt;'A'&lt;/SPAN&gt; AND&lt;SPAN style="COLOR:#ff0000;"&gt; 'D'&lt;/SPAN&gt; &lt;SPAN style="COLOR:#3333ff;"&gt;THEN&lt;/SPAN&gt; NULL &lt;SPAN style="COLOR:#3333ff;"&gt;ELSE&lt;/SPAN&gt; @1 &lt;SPAN style="COLOR:#3333ff;"&gt;END&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR:#009900;"&gt;--E&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;DECLARE&lt;/SPAN&gt; @1 &lt;SPAN style="COLOR:#3333ff;"&gt;char&lt;/SPAN&gt;(1)&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;SELECT&lt;/SPAN&gt; @1 =&lt;SPAN style="COLOR:#ff0000;"&gt;'E' &lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;SELECT&lt;/SPAN&gt; &lt;SPAN style="COLOR:#cc33cc;"&gt;CASE&lt;/SPAN&gt; &lt;SPAN style="COLOR:#3333ff;"&gt;WHEN&lt;/SPAN&gt; @1 BETWEEN &lt;SPAN style="COLOR:#ff0000;"&gt;'A'&lt;/SPAN&gt; AND&lt;SPAN&gt; 'D'&lt;/SPAN&gt; &lt;SPAN style="COLOR:#3333ff;"&gt;THEN&lt;/SPAN&gt; NULL &lt;SPAN style="COLOR:#3333ff;"&gt;ELSE&lt;/SPAN&gt; @1 &lt;SPAN style="COLOR:#3333ff;"&gt;END&lt;/SPAN&gt; &lt;/P&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=3229" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/denis_gobo/archive/tags/Tip/default.aspx">Tip</category><category domain="http://sqlblog.com/blogs/denis_gobo/archive/tags/SQL+Server+2008/default.aspx">SQL Server 2008</category><category domain="http://sqlblog.com/blogs/denis_gobo/archive/tags/sqL+Server+2000/default.aspx">sqL Server 2000</category><category domain="http://sqlblog.com/blogs/denis_gobo/archive/tags/SQL+Server+2005/default.aspx">SQL Server 2005</category><category domain="http://sqlblog.com/blogs/denis_gobo/archive/tags/trick/default.aspx">trick</category><category domain="http://sqlblog.com/blogs/denis_gobo/archive/tags/NULLIF/default.aspx">NULLIF</category><category domain="http://sqlblog.com/blogs/denis_gobo/archive/tags/Nulls/default.aspx">Nulls</category></item><item><title>Increase Your Productivity With Query Analyzer/SQL Server Management Studio</title><link>http://sqlblog.com/blogs/denis_gobo/archive/2007/09/24/2664.aspx</link><pubDate>Mon, 24 Sep 2007 15:52:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:2664</guid><dc:creator>Denis Gobo</dc:creator><slash:comments>5</slash:comments><comments>http://sqlblog.com/blogs/denis_gobo/comments/2664.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/denis_gobo/commentrss.aspx?PostID=2664</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/denis_gobo/rsscomments.aspx?PostID=2664</wfw:comment><description>&lt;DIV&gt;&lt;STRONG&gt;Drag And Drop Column Names&lt;/STRONG&gt; &lt;BR&gt;In Query Analyzer you can save a lot of time by using this trick instead of typing all the column names of a table &lt;BR&gt;Hit F8, this will open Object Browser &lt;BR&gt;Navigate to DatabaseName/TableName/Columns &lt;BR&gt;Click on the column folder and drag the column folder into the Code Window &lt;BR&gt;Upon release you will see that all the column names are in the Code Window &lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;Use Shortcuts&lt;/STRONG&gt; &lt;BR&gt;Did you know that you can have CTRL + Number key combinations/shortcuts in Query Analyzer? You can set it up so that CTRL + 5 executes sp_who2 for example. I thought everyone already knew this but apparently not; I showed this to 3 coworkers yesterday and they didn't know about it. So how do you set this up? It is pretty easy, select &lt;STRONG&gt;Tools --&amp;gt;Customize&lt;/STRONG&gt; from the toolbar. In the Customize tab you will see 3 shortcuts already: &lt;BR&gt;&lt;BR&gt;ALT + F1 sp_help &lt;BR&gt;&lt;BR&gt;CTRL + 1 sp_who &lt;BR&gt;&lt;BR&gt;CTRL + 2 sp_lock &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;To add your own queries/procedures type or paste the query or stored procedure that you want to execute into one of the empty ones (see picture below) &lt;BR&gt;&lt;BR&gt;&lt;A href="http://photos1.blogger.com/x/blogger/2193/1601/1600/693600/CustomizeQA.jpg"&gt;&lt;IMG alt="" src="http://photos1.blogger.com/x/blogger/2193/1601/400/432547/CustomizeQA.jpg" border=0&gt;&lt;/A&gt; &lt;BR&gt;&lt;BR&gt;If you have 4 Query Analyzers applications open it will be available in all 4 of them. I usually have 4 Query Analyzer applications open, one for staging, one for development and one each for one of the production boxes. so if I have to quickly check that a table is the same on all 4 machines I just hit CTRL + 6 in all 4 Query Analyzer applications and I am done. &lt;BR&gt;&lt;BR&gt;I created a Word document that looks like this &lt;BR&gt;3 - errorlog &lt;BR&gt;4 - product table &lt;BR&gt;5 - country table &lt;BR&gt;6 - vendor codes &lt;BR&gt;7 - sp_who2 &lt;BR&gt;etc etc etc &lt;BR&gt;&lt;BR&gt;The font-size is 32, I printed this out and put it next to my monitor so that I can quickly see which key combination I have to hit. Once you set this up you will see how much time it will save you.&amp;nbsp;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;In SSMS 2005. Click Tools -&amp;gt; Customize -&amp;gt; "Commands" tab -&amp;gt; "Keyboard" button (Lower left corner of screen).On the options window, click the Keyboard option (under Environment). See pictures below: &lt;BR&gt;&lt;BR&gt;&lt;A href="http://photos1.blogger.com/x/blogger/2193/1601/1600/392943/ss2005Keyboardoption.jpg"&gt;&lt;IMG src="http://photos1.blogger.com/x/blogger/2193/1601/400/621497/ss2005Keyboardoption.jpg" border=0&gt;&lt;/A&gt; &lt;BR&gt;&lt;A href="http://photos1.blogger.com/x/blogger/2193/1601/1600/872181/ss2005Keyboardoption2.jpg"&gt;&lt;IMG src="http://photos1.blogger.com/x/blogger/2193/1601/400/356770/ss2005Keyboardoption2.jpg" border=0&gt;&lt;/A&gt; &lt;/DIV&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=2664" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/denis_gobo/archive/tags/Tip/default.aspx">Tip</category><category domain="http://sqlblog.com/blogs/denis_gobo/archive/tags/SQL+Server+2008/default.aspx">SQL Server 2008</category><category domain="http://sqlblog.com/blogs/denis_gobo/archive/tags/sqL+Server+2000/default.aspx">sqL Server 2000</category><category domain="http://sqlblog.com/blogs/denis_gobo/archive/tags/SQL+Server+2005/default.aspx">SQL Server 2005</category><category domain="http://sqlblog.com/blogs/denis_gobo/archive/tags/Shortcut/default.aspx">Shortcut</category><category domain="http://sqlblog.com/blogs/denis_gobo/archive/tags/Tips+and+Tricks/default.aspx">Tips and Tricks</category><category domain="http://sqlblog.com/blogs/denis_gobo/archive/tags/Productivity/default.aspx">Productivity</category></item><item><title>SQL Gotcha: Do you know what data type is used when running ad-hoc queries?</title><link>http://sqlblog.com/blogs/denis_gobo/archive/2007/09/10/2511.aspx</link><pubDate>Mon, 10 Sep 2007 14:31:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:2511</guid><dc:creator>Denis Gobo</dc:creator><slash:comments>1</slash:comments><comments>http://sqlblog.com/blogs/denis_gobo/comments/2511.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/denis_gobo/commentrss.aspx?PostID=2511</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/denis_gobo/rsscomments.aspx?PostID=2511</wfw:comment><description>&lt;P&gt;This is for SQL Server 2000 only, SQL Server 2005 is a lot smarter which is another reason to upgrade.&lt;BR&gt;When running the following query you probably already know that 2 is converted to an int datatype.&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;SELECT&lt;/SPAN&gt; *&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;FROM&lt;/SPAN&gt; Table&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;WHERE&lt;/SPAN&gt; ID =2&lt;BR&gt;&lt;BR&gt;What about the value 2222222222? Do you think since it can't fit into an int that it will be a bigint? Let's test that out.&lt;BR&gt;First create this table.&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;CREATE TABLE&lt;/SPAN&gt; TestAdHoc (id &lt;SPAN style="COLOR:#3333ff;"&gt;bigint primary key&lt;/SPAN&gt;)&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;INSERT INTO&lt;/SPAN&gt; TestAdHoc&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;SELECT&lt;/SPAN&gt; 1 &lt;SPAN style="COLOR:#3333ff;"&gt;UNION&lt;BR&gt;SELECT&lt;/SPAN&gt; 2433253453453466666 &lt;SPAN style="COLOR:#3333ff;"&gt;UNION&lt;BR&gt;SELECT &lt;/SPAN&gt;2 &lt;SPAN style="COLOR:#3333ff;"&gt;UNION&lt;BR&gt;SELECT&lt;/SPAN&gt; 3 &lt;SPAN style="COLOR:#3333ff;"&gt;UNION&lt;BR&gt;SELECT&lt;/SPAN&gt; 4 &lt;SPAN style="COLOR:#3333ff;"&gt;UNION&lt;BR&gt;SELECT&lt;/SPAN&gt; 5 &lt;SPAN style="COLOR:#3333ff;"&gt;UNION&lt;BR&gt;SELECT&lt;/SPAN&gt; 6 &lt;/P&gt;
&lt;P&gt;Now let's run these 2 queries which return the same data&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;SELECT&lt;/SPAN&gt; *&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;FROM&lt;/SPAN&gt; TestAdHoc&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;WHERE&lt;/SPAN&gt; ID =2433253453453466666&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;SELECT&lt;/SPAN&gt; *&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;FROM&lt;/SPAN&gt; TestAdHoc&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;WHERE&lt;/SPAN&gt; ID =&lt;SPAN style="COLOR:#cc33cc;"&gt;CONVERT&lt;/SPAN&gt;(&lt;SPAN style="COLOR:#3333ff;"&gt;bigint&lt;/SPAN&gt;,2433253453453466666)&lt;BR&gt;&lt;BR&gt;Now run the following SET statement and run the 2 queries again&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;SET SHOWPLAN_TEXT ON &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;SELECT&lt;/SPAN&gt; *&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;FROM&lt;/SPAN&gt; TestAdHoc&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;WHERE&lt;/SPAN&gt; ID =2433253453453466666&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;SELECT&lt;/SPAN&gt; *&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;FROM&lt;/SPAN&gt; TestAdHoc&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;WHERE&lt;/SPAN&gt; ID =&lt;SPAN style="COLOR:#cc33cc;"&gt;CONVERT&lt;/SPAN&gt;(&lt;SPAN style="COLOR:#3333ff;"&gt;bigint&lt;/SPAN&gt;,2433253453453466666)&lt;BR&gt;&lt;BR&gt;And what do we see?&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;First Query&lt;/STRONG&gt;&lt;BR&gt;--Nested Loops(Inner Join, OUTER REFERENCES:([Expr1002], [Expr1003], [Expr1004]))&lt;BR&gt;--Compute Scalar(DEFINE:([Expr1002]=Convert([@1])-1,&lt;BR&gt;[Expr1003]=Convert([@1])+1, [Expr1004]=If (Convert([@1])-1=NULL)&lt;BR&gt;then 0 else 6If (Convert([@1])+1=NULL) then 0 else 10))&lt;BR&gt;--Constant Scan&lt;BR&gt;--Clustered Index Seek(OBJECT:([Blog].[dbo].[TestAdHoc].[PK__TestAdHoc__2818EA29]),&lt;BR&gt;SEEK:([TestAdHoc].[id] &amp;gt; [Expr1002] AND [TestAdHoc].[id] &amp;lt; [Expr1003]), WHERE:(Convert([TestAdHoc].[id])=[@1]) ORDERED FORWARD)&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;Second Query&lt;BR&gt;&lt;/STRONG&gt;--Clustered Index Seek(OBJECT:([Blog].[dbo].[TestAdHoc].[PK__TestAdHoc__2818EA29]),&lt;BR&gt;SEEK:([TestAdHoc].[id]=2433253453453466666) ORDERED FORWARD)&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;The first query has a much different execution plan than the second query. The first execution plan has a lot more than the second execution plan and will be a little slower.&lt;BR&gt;&lt;BR&gt;So how do you know what dataype the value is converted to? Here is a simple SQL query which I first saw on Louis Davidson's &lt;A class="" href="http://sqlblog.com/blogs/louis_davidson/default.aspx"&gt;blog&lt;/A&gt;. Just run this query.&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;SELECT&lt;/SPAN&gt; &lt;SPAN style="COLOR:#cc33cc;"&gt;CAST&lt;/SPAN&gt;(&lt;SPAN style="COLOR:#cc33cc;"&gt;SQL_VARIANT_PROPERTY&lt;/SPAN&gt;(2433253453453466666,&lt;SPAN style="COLOR:#ff0000;"&gt;'BaseType'&lt;/SPAN&gt;) &lt;SPAN style="COLOR:#3333ff;"&gt;AS varchar&lt;/SPAN&gt;(20)) +&lt;SPAN style="COLOR:#ff0000;"&gt; '('&lt;/SPAN&gt; +&lt;BR&gt;&lt;SPAN style="COLOR:#cc33cc;"&gt;CAST&lt;/SPAN&gt;(&lt;SPAN style="COLOR:#cc33cc;"&gt;SQL_VARIANT_PROPERTY&lt;/SPAN&gt;(2433253453453466666,&lt;SPAN style="COLOR:#ff0000;"&gt;'Precision'&lt;/SPAN&gt;) &lt;SPAN style="COLOR:#3333ff;"&gt;AS varchar&lt;/SPAN&gt;(10)) +&lt;SPAN style="COLOR:#ff0000;"&gt; ','&lt;/SPAN&gt; +&lt;BR&gt;&lt;SPAN style="COLOR:#cc33cc;"&gt;CAST&lt;/SPAN&gt;(&lt;SPAN style="COLOR:#cc33cc;"&gt;SQL_VARIANT_PROPERTY&lt;/SPAN&gt;(2433253453453466666,&lt;SPAN style="COLOR:#ff0000;"&gt;'Scale'&lt;/SPAN&gt;) &lt;SPAN style="COLOR:#3333ff;"&gt;AS varchar&lt;/SPAN&gt;(10)) +&lt;SPAN style="COLOR:#ff0000;"&gt; ')'&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;So the output is numeric(19,0). So instead of a bigint SQL Server converts the value to a numeric data type.&lt;BR&gt;Here is another query which demonstrates the different datatypes used.&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;SELECT&lt;/SPAN&gt; &lt;SPAN style="COLOR:#cc33cc;"&gt;CAST&lt;/SPAN&gt;(&lt;SPAN style="COLOR:#cc33cc;"&gt;SQL_VARIANT_PROPERTY&lt;/SPAN&gt;(2,&lt;SPAN style="COLOR:#ff0000;"&gt;'BaseType'&lt;/SPAN&gt;) &lt;SPAN style="COLOR:#3333ff;"&gt;AS varchar&lt;/SPAN&gt;(20))&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;UNION&lt;/SPAN&gt; ALL&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;SELECT&lt;/SPAN&gt; &lt;SPAN style="COLOR:#cc33cc;"&gt;CAST&lt;/SPAN&gt;(&lt;SPAN style="COLOR:#cc33cc;"&gt;SQL_VARIANT_PROPERTY&lt;/SPAN&gt;(222222222,&lt;SPAN style="COLOR:#ff0000;"&gt;'BaseType'&lt;/SPAN&gt;) &lt;SPAN style="COLOR:#3333ff;"&gt;AS varchar&lt;/SPAN&gt;(20))&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;UNION&lt;/SPAN&gt; ALL&lt;BR&gt;&lt;SPAN style="COLOR:#3333ff;"&gt;SELECT&lt;/SPAN&gt; &lt;SPAN style="COLOR:#cc33cc;"&gt;CAST&lt;/SPAN&gt;(&lt;SPAN style="COLOR:#cc33cc;"&gt;SQL_VARIANT_PROPERTY&lt;/SPAN&gt;(2222222222,&lt;SPAN style="COLOR:#ff0000;"&gt;'BaseType'&lt;/SPAN&gt;) &lt;SPAN style="COLOR:#3333ff;"&gt;AS varchar&lt;/SPAN&gt;(20))&lt;BR&gt;&lt;BR&gt;So when running ad-hoc queries it is always a good practice to use parameters or inline convert statements. &lt;/P&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=2511" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/denis_gobo/archive/tags/Tip/default.aspx">Tip</category><category domain="http://sqlblog.com/blogs/denis_gobo/archive/tags/sqL+Server+2000/default.aspx">sqL Server 2000</category><category domain="http://sqlblog.com/blogs/denis_gobo/archive/tags/trick/default.aspx">trick</category><category domain="http://sqlblog.com/blogs/denis_gobo/archive/tags/Gotcha/default.aspx">Gotcha</category></item><item><title>Speed Up Performance And Slash Your Table Size By 90% By Using Bitwise Logic</title><link>http://sqlblog.com/blogs/denis_gobo/archive/2007/05/29/test.aspx</link><pubDate>Tue, 29 May 2007 23:16:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:1336</guid><dc:creator>Denis Gobo</dc:creator><slash:comments>19</slash:comments><comments>http://sqlblog.com/blogs/denis_gobo/comments/1336.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/denis_gobo/commentrss.aspx?PostID=1336</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/denis_gobo/rsscomments.aspx?PostID=1336</wfw:comment><description>&lt;P&gt;You have all seen websites where you can pick a bunch of categories by selection a bunch of check boxes. usually what you do is store those in a lookup table and then you create another table where you store all the categories for each customer. &lt;BR&gt;What if I tell you that you can store all that info in 1 row instead of 10 rows if a customer picked 10 categories. &lt;BR&gt;Take a look at this&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;1 Classic Rock&lt;BR&gt;2 Hard Rock&lt;BR&gt;4 Speed/Trash Metal&lt;BR&gt;You will store a&amp;nbsp; value of 1 + 2 + 4 = 7(you just sum the values)&lt;BR&gt;&lt;BR&gt;Now run this to check, the result will be 7 for a match and some other value otherwise&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;select 7 |1,&lt;BR&gt;7 |2,&lt;BR&gt;7 |3,&lt;BR&gt;7 |4,&lt;BR&gt;7 |5,&lt;BR&gt;7 |6,&lt;BR&gt;7 |7,&lt;BR&gt;7 |8,&lt;BR&gt;7 | 20&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;What is this | (pipe symbol)?&lt;BR&gt;&lt;STRONG&gt;From Books on line&lt;/STRONG&gt;&lt;BR&gt;The bitwise | operator performs a bitwise logical OR between the two expressions, taking each corresponding bit for both expressions. The bits in the result are set to 1 if either or both bits (for the current bit being resolved) in the input expressions have a value of 1; if neither bit in the input expressions is 1, the bit in the result is set to 0. &lt;BR&gt;The | bitwise operator requires two expressions, and it can be used on expressions of only the integer data type category.&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;Here is how you would typically use this, first create this table&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;FONT color=#0000ff size=2&gt;CREATE TABLE &lt;/FONT&gt;&lt;FONT size=2&gt;NumbersTable &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;Num &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; NumbersTable &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;1&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; NumbersTable &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;2&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; NumbersTable &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;3&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; NumbersTable &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;4&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; NumbersTable &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;5&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; NumbersTable &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;6&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; NumbersTable &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;7&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; NumbersTable &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;8&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; NumbersTable &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;9&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; NumbersTable &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;10&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; NumbersTable &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;11&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; NumbersTable &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;12&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;GO&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;Now run this&lt;BR&gt;&lt;FONT color=#0000ff size=2&gt;&lt;BR&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; Num&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;CASE&lt;/FONT&gt;&lt;FONT size=2&gt; 7 &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;|&lt;/FONT&gt;&lt;FONT size=2&gt; Num &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;WHEN&lt;/FONT&gt;&lt;FONT size=2&gt; 7 &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;THEN&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'Yes'&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ELSE&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'No'&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;END&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;AS&lt;/FONT&gt;&lt;FONT size=2&gt; COL&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;FROM&lt;/FONT&gt;&lt;FONT size=2&gt; NumbersTable&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;Here is the output&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;Num COL&lt;BR&gt;---- ---&lt;BR&gt;1 Yes&lt;BR&gt;2 Yes&lt;BR&gt;3 Yes&lt;BR&gt;4 Yes&lt;BR&gt;5 Yes&lt;BR&gt;6 Yes&lt;BR&gt;7 Yes&lt;BR&gt;8 No&lt;BR&gt;9 No&lt;BR&gt;10 No&lt;BR&gt;11 No&lt;BR&gt;12 No&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;Okay enough theory let's start with some SQL code. First create this table which will hold all the categories&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;FONT color=#0000ff size=2&gt;CREATE&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;TABLE&lt;/FONT&gt;&lt;FONT size=2&gt; MusicChoice &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;ID &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INT&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;PRIMARY&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;KEY&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;BR&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;ChoiceDescription &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VARCHAR&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;100&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;))&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color=#808080 size=2&gt;
&lt;P&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; MusicChoice &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;1&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'Classic Rock'&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; MusicChoice &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;2&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'Hard Rock'&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; MusicChoice &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;3&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'Speed/Trash Metal'&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; MusicChoice &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;4&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'Classical'&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; MusicChoice &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;5&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'Rap'&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; MusicChoice &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;6&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'Blues'&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; MusicChoice &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;7&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'Jazz'&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; MusicChoice &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;8&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'Alternative Rock'&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; MusicChoice &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;9&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'Easy Listening'&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; MusicChoice &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;10&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'Progressive Rock'&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; MusicChoice &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;11&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'Punk Rock'&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; MusicChoice &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;12&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'Swing'&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; MusicChoice &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;13&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'Techno'&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; MusicChoice &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;14&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'Pop'&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; MusicChoice &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;15&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'Disco'&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; MusicChoice &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;16&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'Big Band'&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; MusicChoice &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;17&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'Gospel'&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; MusicChoice &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;18&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'Heavy Metal'&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; MusicChoice &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;19&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'House'&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; MusicChoice &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;20&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'Celtic'&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;Now create the Bitwise table&lt;BR&gt;&lt;FONT color=#0000ff size=2&gt;&lt;BR&gt;CREATE&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;TABLE&lt;/FONT&gt;&lt;FONT size=2&gt; BitwiseMusicChoice &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;ID &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INT&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;PRIMARY&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;KEY&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;BR&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;ChoiceDescription &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VARCHAR&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;100&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;))&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#808080 size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;We will use the POWER function to create the correct values&lt;BR&gt;run this&lt;BR&gt;&lt;FONT color=#0000ff size=2&gt;&lt;BR&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; id&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt;POWER&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;2&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt;id&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;-&lt;/FONT&gt;&lt;FONT size=2&gt;1&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;FONT size=2&gt;BitID&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt;ChoiceDescription&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;FROM&lt;/FONT&gt;&lt;FONT size=2&gt; MusicChoice&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;BR&gt;&lt;/FONT&gt;Here is the output&lt;BR&gt;id BitID&amp;nbsp; ChoiceDescription&lt;BR&gt;1 1 Classic Rock&lt;BR&gt;2 2 Hard Rock&lt;BR&gt;3 4 Speed/Trash Metal&lt;BR&gt;4 8 Classical&lt;BR&gt;5 16 Rap&lt;BR&gt;6 32 Blues&lt;BR&gt;7 64 Jazz&lt;BR&gt;8 128 Alternative Rock&lt;BR&gt;9 256 Easy Listening&lt;BR&gt;10 512 Progressive&amp;nbsp; Rock &lt;BR&gt;11 1024 Punk Rock&lt;BR&gt;12 2048 Swing&lt;BR&gt;13 4096 Techno&lt;BR&gt;14 8192 Pop&lt;BR&gt;15 16384 Disco&lt;BR&gt;16 32768 Big Band&lt;BR&gt;17 65536 Gospel&lt;BR&gt;18 131072 Heavy Metal&lt;BR&gt;19 262144 House&lt;BR&gt;20 524288 Celtic&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;Now insert it into the BitwiseMusicChoice table&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; BitwiseMusicChoice&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt;POWER&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;2&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt;id&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;-&lt;/FONT&gt;&lt;FONT size=2&gt;1&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;FONT size=2&gt;BitID&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt;ChoiceDescription&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;FROM&lt;/FONT&gt;&lt;FONT size=2&gt; MusicChoice&lt;BR&gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;BR&gt;Now create this customer table&lt;BR&gt;&lt;BR&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&lt;BR&gt;CREATE&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;TABLE&lt;/FONT&gt;&lt;FONT size=2&gt; Customer &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;CustomerID &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;identity&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; CustomerCode &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;uniqueidentifier&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;not&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;null)&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color=#808080 size=2&gt;
&lt;P&gt;&lt;BR&gt;&lt;/FONT&gt;Insert these 5 values first, we will use these to compare performance later&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; Customer &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'1DAB5C03-BC23-4FB5-AC3D-A46489459FE9'&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; Customer &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'F7DDCDBC-F646-493A-B872-4E2E82EA8E14'&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; Customer &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'E8A4C3D2-AEB0-4821-A49D-3BF085354448'&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; Customer &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'52581088-C427-4D2F-A782-250564D44D8C'&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; Customer &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'1B2622C4-6C17-4E74-99D6-336197FBBCFF'&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;Now we will insert a total of 10000 customers&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;FONT color=#0000ff size=2&gt;SET&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;NOCOUNT&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ON&lt;BR&gt;BEGIN&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;TRAN&lt;BR&gt;DECLARE&lt;/FONT&gt;&lt;FONT size=2&gt; @LoopCounter &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INT&lt;BR&gt;SET&lt;/FONT&gt;&lt;FONT size=2&gt; @LoopCounter &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; 6&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;WHILE&lt;/FONT&gt;&lt;FONT size=2&gt; @LoopCounter &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&amp;lt;=&lt;/FONT&gt;&lt;FONT size=2&gt; 10000&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;BEGIN&lt;BR&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; Customer &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt;NEWID&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;())&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;SET&lt;/FONT&gt;&lt;FONT size=2&gt; @LoopCounter &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; @LoopCounter &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;+&lt;/FONT&gt;&lt;FONT size=2&gt; 1&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;END&lt;BR&gt;COMMIT&lt;/FONT&gt;&lt;FONT size=2&gt; WORK&lt;BR&gt;GO&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;BR&gt;&lt;/FONT&gt;Now add the primary key&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;FONT color=#0000ff size=2&gt;ALTER&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;TABLE&lt;/FONT&gt;&lt;FONT size=2&gt; Customer &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ADD&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;CONSTRAINT&lt;/FONT&gt;&lt;FONT size=2&gt; pk_Customer &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;PRIMARY&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;KEY&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;CustomerCode&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;Create another table to hold the choices&lt;BR&gt;&lt;FONT color=#0000ff size=2&gt;&lt;BR&gt;CREATE&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;TABLE&lt;/FONT&gt;&lt;FONT size=2&gt; CustomerMusicChoice &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;id &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INT&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;identity&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; MusicChoiceID &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; CustomerCode &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;uniqueidentifier&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color=#808080 size=2&gt;
&lt;P&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ALTER&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;TABLE&lt;/FONT&gt;&lt;FONT size=2&gt; CustomerMusicChoice &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ADD&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;CONSTRAINT&lt;/FONT&gt;&lt;FONT size=2&gt; fk_MusicChoice_ID &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;FOREIGN&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;KEY&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;MusicChoiceID&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;REFERENCES&lt;/FONT&gt;&lt;FONT size=2&gt; MusicChoice&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;ID&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color=#808080 size=2&gt;
&lt;P&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ALTER&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;TABLE&lt;/FONT&gt;&lt;FONT size=2&gt; CustomerMusicChoice &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ADD&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;CONSTRAINT&lt;/FONT&gt;&lt;FONT size=2&gt; fk_CustomerCode &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;FOREIGN&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;KEY&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;CustomerCode&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;REFERENCES&lt;/FONT&gt;&lt;FONT size=2&gt; Customer&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;CustomerCode&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;/P&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;BR&gt;&lt;/FONT&gt;For each customer insert 10 random choices, this should run less than a minute&lt;BR&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2&gt;SET&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;NOCOUNT&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ON&lt;BR&gt;BEGIN&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;TRAN&lt;BR&gt;DECLARE&lt;/FONT&gt;&lt;FONT size=2&gt; @LoopCounter &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INT&lt;BR&gt;DECLARE&lt;/FONT&gt;&lt;FONT size=2&gt; @CustID &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;uniqueidentifier&lt;BR&gt;SET&lt;/FONT&gt;&lt;FONT size=2&gt; @LoopCounter &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; 1&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;WHILE&lt;/FONT&gt;&lt;FONT size=2&gt; @LoopCounter &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&amp;lt;=&lt;/FONT&gt;&lt;FONT size=2&gt; 10000&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;BEGIN&lt;BR&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; @CustID &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; CustomerCode&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;FROM&lt;/FONT&gt;&lt;FONT size=2&gt; Customer &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;WHERE&lt;/FONT&gt;&lt;FONT size=2&gt; CustomerID &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; @LoopCounter&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; Customer &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;VALUES&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt;NEWID&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;())&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; CustomerMusicChoice&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;MusicChoiceID&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt;CustomerCode&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;TOP&lt;/FONT&gt;&lt;FONT size=2&gt; 10 id&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt;@CustID&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;FROM&lt;/FONT&gt;&lt;FONT size=2&gt; MusicChoice&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ORDER&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;BY&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt;NEWID&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;()&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;SET&lt;/FONT&gt;&lt;FONT size=2&gt; @LoopCounter &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; @LoopCounter &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;+&lt;/FONT&gt;&lt;FONT size=2&gt; 1&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;END&lt;BR&gt;COMMIT&lt;/FONT&gt;&lt;FONT size=2&gt; WORK&lt;BR&gt;GO&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;Now add these indexes&lt;BR&gt;&lt;FONT color=#0000ff size=2&gt;CREATE&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INDEX&lt;/FONT&gt;&lt;FONT size=2&gt; ix_CustomerMusicChoice_Cust &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;On&lt;/FONT&gt;&lt;FONT size=2&gt; CustomerMusicChoice&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;CustomerCode&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;CREATE&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INDEX&lt;/FONT&gt;&lt;FONT size=2&gt; ix_CustomerMusicChoice_ID &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;On&lt;/FONT&gt;&lt;FONT size=2&gt; CustomerMusicChoice&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;MusicChoiceID&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;BR&gt;Create the BitwiseCustomerMusicChoice which will hold the Bitwise values&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;FONT color=#0000ff size=2&gt;CREATE&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;TABLE&lt;/FONT&gt;&lt;FONT size=2&gt; BitwiseCustomerMusicChoice &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;id &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INT&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;identity&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; MusicChoiceID &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; CustomerCode &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;uniqueidentifier&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;not&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;null)&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color=#808080 size=2&gt;
&lt;P&gt;&lt;BR&gt;&lt;/FONT&gt;This will populate the BitwiseCustomerMusicChoice table&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INTO&lt;/FONT&gt;&lt;FONT size=2&gt; BitwiseCustomerMusicChoice&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt;SUM&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt;POWER&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;2&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt;MusicChoiceID&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;-&lt;/FONT&gt;&lt;FONT size=2&gt;1&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;))&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;as&lt;/FONT&gt;&lt;FONT size=2&gt; MusicChoiceID&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt;CustomerCode&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;FROM&lt;/FONT&gt;&lt;FONT size=2&gt; CustomerMusicChoice &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;GROUP&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;BY&lt;/FONT&gt;&lt;FONT size=2&gt; CustomerCode&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;BR&gt;&lt;/FONT&gt;Add the index and foreign key&lt;/P&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;&lt;BR&gt;ALTER&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;TABLE&lt;/FONT&gt;&lt;FONT size=2&gt; BitwiseCustomerMusicChoice &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ADD&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;CONSTRAINT&lt;/FONT&gt;&lt;FONT size=2&gt; pk_BitwiseCustomerMusicChoice &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;PRIMARY&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;KEY&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;CustomerCode&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color=#808080 size=2&gt;
&lt;P&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ALTER&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;TABLE&lt;/FONT&gt;&lt;FONT size=2&gt; BitwiseCustomerMusicChoice &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ADD&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;CONSTRAINT&lt;/FONT&gt;&lt;FONT size=2&gt; fk_BitwiseCustomerCode &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;FOREIGN&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;KEY&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;CustomerCode&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;REFERENCES&lt;/FONT&gt;&lt;FONT size=2&gt; Customer&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;CustomerCode&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;Now let's test performance. Hit CTRL + K (SQL 2000) or CTRL + M (SQL 2005) &lt;BR&gt;&lt;/P&gt;
&lt;P&gt;These 2 queries will return something like this&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;STRONG&gt;ID	ChoiceDescription	Picked&lt;/STRONG&gt;
8	Alternative Rock	No
16	Big Band		No
6	Blues			No
20	Celtic			No
1	Classic Rock		No
4	Classical		Yes
15	Disco			Yes
9	Easy Listening		Yes
17	Gospel			No
2	Hard Rock		No
18	Heavy Metal		Yes
19	House			Yes
7	Jazz			Yes
14	Pop			Yes
10	Progressive  Rock	Yes
11	Punk Rock		No
5	Rap			No
3	Speed/Trash Metal	Yes
12	Swing			Yes
13	Techno			No&lt;/PRE&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2&gt;&lt;BR&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; mc&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;ID&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt;ChoiceDescription&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;CASE&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;WHEN&lt;/FONT&gt;&lt;FONT size=2&gt; CustomerCode &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;IS&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;NULL&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;THEN&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'No'&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ELSE&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'Yes'&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;END&lt;/FONT&gt;&lt;FONT size=2&gt; Picked &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;FROM&lt;/FONT&gt;&lt;FONT size=2&gt; CustomerMusicChoice cmc &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;RIGHT&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;JOIN&lt;/FONT&gt;&lt;FONT size=2&gt; MusicChoice mc &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;on&lt;/FONT&gt;&lt;FONT size=2&gt; cmc&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;MusicChoiceID &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; mc&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;id&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;AND&lt;/FONT&gt;&lt;FONT size=2&gt; CustomerCode &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'1DAB5C03-BC23-4FB5-AC3D-A46489459FE9'&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ORDER&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;BY&lt;/FONT&gt;&lt;FONT size=2&gt; ChoiceDescription&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; bmc&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;ID&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt;ChoiceDescription&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;BR&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;CASE&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;WHEN&lt;/FONT&gt;&lt;FONT size=2&gt; bmc&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;ID &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;|&lt;/FONT&gt;&lt;FONT size=2&gt; MusicChoiceID &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;MusicChoiceID &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;THEN&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'Yes'&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ELSE&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'No'&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;END&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;AS&lt;/FONT&gt;&lt;FONT size=2&gt; Picked&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;FROM&lt;/FONT&gt;&lt;FONT size=2&gt; BitwiseCustomerMusicChoice cmc&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;CROSS&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;JOIN&lt;/FONT&gt;&lt;FONT size=2&gt; BitwiseMusicChoice bmc &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;WHERE&lt;/FONT&gt;&lt;FONT size=2&gt; CustomerCode &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'1DAB5C03-BC23-4FB5-AC3D-A46489459FE9'&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ORDER&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;BY&lt;/FONT&gt;&lt;FONT size=2&gt; ChoiceDescription&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;BR&gt;&lt;/FONT&gt;Look at the execution plan&lt;BR&gt;67.60% against 32.40% not bad right?&lt;/P&gt;
&lt;P&gt;&lt;IMG title=Plan1 style="WIDTH:682px;HEIGHT:456px;" height=456 alt=Plan1 src="http://i12.tinypic.com/526krgo.jpg" width=682&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;Now run this, we will add AND bmc.ID &amp;gt; 0 to both queries. This will change an index scan to an index seek in the bottom query &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;FONT color=#0000ff size=2&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; mc&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;ID&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt;ChoiceDescription&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;CASE&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;WHEN&lt;/FONT&gt;&lt;FONT size=2&gt; CustomerCode &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;IS&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;NULL&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;THEN&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'No'&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ELSE&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'Yes'&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;END&lt;/FONT&gt;&lt;FONT size=2&gt; Picked &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;FROM&lt;/FONT&gt;&lt;FONT size=2&gt; CustomerMusicChoice cmc &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;RIGHT&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;JOIN&lt;/FONT&gt;&lt;FONT size=2&gt; MusicChoice mc &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;on&lt;/FONT&gt;&lt;FONT size=2&gt; cmc&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;MusicChoiceID &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; mc&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;id&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;AND&lt;/FONT&gt;&lt;FONT size=2&gt; CustomerCode &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'1DAB5C03-BC23-4FB5-AC3D-A46489459FE9'&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;AND&lt;/FONT&gt;&lt;FONT size=2&gt; mc&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;ID &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT size=2&gt; 0&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ORDER&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;BY&lt;/FONT&gt;&lt;FONT size=2&gt; ChoiceDescription&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; bmc&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;ID&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt;ChoiceDescription&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;BR&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;CASE&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;WHEN&lt;/FONT&gt;&lt;FONT size=2&gt; bmc&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;ID &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;|&lt;/FONT&gt;&lt;FONT size=2&gt; MusicChoiceID &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;MusicChoiceID &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;THEN&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'Yes'&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ELSE&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'No'&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;END&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;AS&lt;/FONT&gt;&lt;FONT size=2&gt; Picked&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;FROM&lt;/FONT&gt;&lt;FONT size=2&gt; BitwiseCustomerMusicChoice cmc&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;CROSS&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;JOIN&lt;/FONT&gt;&lt;FONT size=2&gt; BitwiseMusicChoice bmc &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;WHERE&lt;/FONT&gt;&lt;FONT size=2&gt; CustomerCode &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'1DAB5C03-BC23-4FB5-AC3D-A46489459FE9'&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;AND&lt;/FONT&gt;&lt;FONT size=2&gt; bmc&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;ID &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT size=2&gt; 0&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ORDER&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;BY&lt;/FONT&gt;&lt;FONT size=2&gt; ChoiceDescription&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;That improved the performance a little. 82.75% against 17.25%&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;IMG title=Plan2 style="WIDTH:689px;HEIGHT:450px;" height=450 alt=Plan2 src="http://i10.tinypic.com/6b2vqip.jpg" width=689&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;Now look at the tables, after running dbcc showcontig you can see that the BitwiseCustomerMusicChoice is about 1/10th the size of the CustomerMusicChoice table which is as expected.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;dbcc showcontig ('BitwiseCustomerMusicChoice')&lt;BR&gt;---------------------------------------------------------------------------&lt;BR&gt;DBCC SHOWCONTIG scanning 'BitwiseCustomerMusicChoice' table... &lt;BR&gt;Table: 'BitwiseCustomerMusicChoice' (772197801); index ID: 1, database ID: 26&lt;BR&gt;TABLE level scan performed.&lt;BR&gt;- Pages Scanned................................: 41&lt;BR&gt;- Extents Scanned..............................: 6 &lt;BR&gt;- Extent Switches..............................: 5&lt;BR&gt;- Avg. Pages per Extent........................: 6.8&lt;BR&gt;- Scan Density [Best Count:Actual Count].......: 100.00% [6:6]&lt;BR&gt;- Logical Scan Fragmentation ..................: 0.00%&lt;BR&gt;- Extent Scan Fragmentation ...................: 0.00%&lt;BR&gt;- Avg. Bytes Free per Page.....................: 48.0&lt;BR&gt;- Avg. Page Density (full).....................: 99.41%&lt;BR&gt;DBCC execution completed. If DBCC printed error messages, contact your system administrator. &lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;dbcc showcontig ('CustomerMusicChoice')&lt;BR&gt;---------------------------------------------------------------------------&lt;BR&gt;DBCC SHOWCONTIG scanning 'CustomerMusicChoice' table...&lt;BR&gt;Table: 'CustomerMusicChoice' (724197630); index ID: 0, database ID: 26 &lt;BR&gt;TABLE level scan performed.&lt;BR&gt;- Pages Scanned................................: 428&lt;BR&gt;- Extents Scanned..............................: 55&lt;BR&gt;- Extent Switches..............................: 54&lt;BR&gt;- Avg. Pages per Extent........................: 7.8&lt;BR&gt;- Scan Density [Best Count:Actual Count].......: 98.18% [54:55]&lt;BR&gt;- Extent Scan Fragmentation ...................: 40.00%&lt;BR&gt;- Avg. Bytes Free per Page.....................: 386.5&lt;BR&gt;- Avg. Page Density (full).....................: 95.22%&lt;BR&gt;DBCC execution completed. If DBCC printed error messages, contact your system administrator.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;What happens if you want to get the total count of for example Classical?&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;FONT color=#0000ff size=2&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt;COUNT&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(*)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;FROM&lt;/FONT&gt;&lt;FONT size=2&gt; CustomerMusicChoice cmc &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;JOIN&lt;/FONT&gt;&lt;FONT size=2&gt; MusicChoice mc &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;on&lt;/FONT&gt;&lt;FONT size=2&gt; cmc&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;MusicChoiceID &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; mc&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;id&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;WHERE&lt;/FONT&gt;&lt;FONT size=2&gt; mc&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;ChoiceDescription &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'Classical'&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt;COUNT&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(*)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;FROM&lt;/FONT&gt;&lt;FONT size=2&gt; BitwiseCustomerMusicChoice cmc&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;JOIN&lt;/FONT&gt;&lt;FONT size=2&gt; BitwiseMusicChoice bmc &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ON&lt;/FONT&gt;&lt;FONT size=2&gt; bmc&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;ID &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;|&lt;/FONT&gt;&lt;FONT size=2&gt; MusicChoiceID &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt;MusicChoiceID &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;WHERE&lt;/FONT&gt;&lt;FONT size=2&gt; bmc&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;ChoiceDescription &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'Classical'&lt;BR&gt;&lt;/FONT&gt;
&lt;P&gt;Here are execution plans for SQl Server 2000 and 2005 
&lt;P&gt;&lt;IMG title=Plan3A style="WIDTH:817px;HEIGHT:514px;" height=514 alt=Plan3A src="http://i19.tinypic.com/6h3bc74.jpg" width=817&gt; 
&lt;P&gt;&lt;IMG title=Plan3B alt=Plan3B src="http://i14.tinypic.com/4mvwml3.jpg"&gt;&amp;nbsp; 
&lt;P&gt;As you can see SQL Server 2005 has a bigger difference than SQL Server 2000&lt;/P&gt;
&lt;P&gt;Now let's look at the overal picture, on a busy system you will have the customer queries running many times an hour/day. The report queries will run maybe a couple a times a day. I think this trade off is perfectly acceptable because overall your system will perform better. Another thing to keep in mind is that instead of 10 inserts you only have to do 1, same with updates, all these little things add up to a lot eventualy.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;So as you can see using bitwise logic is a great way to accomplish a couple of things&lt;BR&gt;&lt;STRONG&gt;Reduce table size&lt;BR&gt;Speed up backup and recovery because your table is much smaller&lt;BR&gt;Improve performance&lt;/STRONG&gt;&lt;BR&gt;&lt;BR&gt;
&lt;P&gt;Of course you have to do some testing for yourself because it might not be appropriate for your design. If your system is more of an OLAP than OLTP type of system then don't bother implementing this since it won't help you.&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&lt;/P&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=1336" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/denis_gobo/archive/tags/Tip/default.aspx">Tip</category><category domain="http://sqlblog.com/blogs/denis_gobo/archive/tags/Performance/default.aspx">Performance</category><category domain="http://sqlblog.com/blogs/denis_gobo/archive/tags/T-SQL/default.aspx">T-SQL</category><category domain="http://sqlblog.com/blogs/denis_gobo/archive/tags/SQL+Server/default.aspx">SQL Server</category></item></channel></rss>