假设你有一长串的字符数为1或0,有点像bitvector,但在数据库列上.您如何查询知道设置/未设置的值?假设您需要知道char 500和char 1500是否为"true".
SELECT Id FROM BitVectorTable WHERE SUBSTRING(BitVector, 500, 1) = '1' AND SUBSTRING(BitVector, 1000, 1) = '1'
但是,没有索引可用于此类查询.当你有很多行时,这会很快变慢.
编辑:至少在SQL Server上,所有内置字符串函数都是确定性的.这意味着您可以根据整个组合值的SUBSTRING()结果调查计算列的可能性,并为每个组合生成一个索引.插入将更慢,表格大小将增加,但搜索将非常快.
SELECT Id FROM BitVectorTable WHERE BitVector_0500 = '1' AND BitVector_1000 = '1'
编辑#2:SQL Server的限制是:
每个普通表1,024列
每"宽"表有30.000列