[dba-VB] Merge rows

jwcolby jwcolby at colbyconsulting.com
Tue Sep 22 15:25:06 CDT 2009


Shamil,

You are asking the wrong guy on this stuff.  I am not fluent in SQL Server, even with all that I do.

Eventually I will be moving everything I can to c#, once I am fluent in c#.  For now I use stored 
procedures for all of the actual order processing.

The whole bit mask thing will definitely be "someday", with a big MAYBE.

John W. Colby
www.ColbyConsulting.com


Shamil Salakhetdinov wrote:
> OK, so you can "pack" 400 boolean fields into 50 bytes long binary field -
> that will be BINARY(50) in T-SQL.
> Although I'm not currently sure you can implement bitwise logical operations
> solely using T-SQL: but I suppose you can get subset of data using
> non-Boolean where clause, and then scan it in C#/VB.NET and filter using
> bitwise C# operations/functions over bit arrays.
> 
> Something like that should work I suppose.
> 
> Please correct me if I'm wrong.
> 
> --
> Shamil  
> 
> -----Original Message-----
> From: dba-vb-bounces at databaseadvisors.com
> [mailto:dba-vb-bounces at databaseadvisors.com] On Behalf Of jwcolby
> Sent: Tuesday, September 22, 2009 11:21 PM
> To: Discussion concerning Visual Basic and related programming issues.
> Subject: Re: [dba-VB] Merge rows
> 
> Hundreds.  Not sure really.  Probably somewhere around 400-500.
> 
> John W. Colby
> www.ColbyConsulting.com
> 
> 
> Shamil Salakhetdinov wrote:
>> John,
>>
>> You can use bitmask(/bitwise) operations - and you can use symbolic
>> constants/variables for bits to not get "seriously nervuos".
>>
>> How many Boolean value fields do you have in your table?
>>
>> --
>> Shamil
>>
>> -----Original Message-----
>> From: dba-vb-bounces at databaseadvisors.com
>> [mailto:dba-vb-bounces at databaseadvisors.com] On Behalf Of jwcolby
>> Sent: Tuesday, September 22, 2009 8:31 PM
>> To: Discussion concerning Visual Basic and related programming issues.
>> Subject: Re: [dba-VB] Merge rows
>>
>> This is an idea worthy of consideration.  The problem is translating the
>> client's original field 
>> name to a bit in the bit field when he sends me an order.
>>
>> The client has a spreadsheet of these fields and sends me orders with the
>> field names (or more often 
>> a "record number" in the spreadsheet).  I look down through the
> spreadsheet
>> to find the record 
>> number, translate that to the field name, then drop that field name into
> the
>> where clause of a query.
>>
>> It would be fascinating to have an already translated bit map of these
>> fields, and able to do these 
>> kinds of where clauses.  It would end up being Where (Bit37 AND Bit44 AND
>> Bit69) OR (BIT190 OR 
>> Bit191) etc.
>>
>> Not exactly readable, but I have to assume that it would be much faster.
> It
>> would make me seriously 
>> nervous though that I actually got the right bits.  As it is now it is
>> "plain English", you can read 
>> the field names from the SQL statement.  I would definitely have to have a
>> well tested tool that 
>> performed the bit lookup and wrote the where().
>>
>> Can you index bits?  If not you would turn the actual query into a ton of
>> table scans, though as you 
>> mention the size of the table would shrink dramatically.  It might
> actually
>> be possible to get the 
>> entire table into memory if each field (that contained just 'Y' values)
> was
>> a single bit.
>>
>> John W. Colby
>> www.ColbyConsulting.com
>>
>>
>> Shamil Salakhetdinov wrote:
>>> <<<
>>> Think ("Hispanic" AND (income >50K) AND (Has Kids)) AND ((HasDog OR
>> HASCat)
>>> OR ...)
>>> ...
>>> The entire point is to make the process faster and faster and faster.
>>> John,
>>>
>>> If you have many [has Kids], [HasCat], [HasDog] kind of fields you can
>>> consider combining them into bit array fields, for predefined range
> values
>>> you can make say half-byte groups bit array fields values... by thus
>>> minimizing the size of your table record...
>>>
>>> --Shamil
>> _______________________________________________
> 
>  
> 
> __________ Information from ESET NOD32 Antivirus, version of virus signature
> database 4448 (20090922) __________
> 
> The message was checked by ESET NOD32 Antivirus.
> 
> http://www.esetnod32.ru
>  
> 
> _______________________________________________
> dba-VB mailing list
> dba-VB at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/dba-vb
> http://www.databaseadvisors.com
> 
> 



More information about the dba-VB mailing list