如何将一个整数转换为两个并轻松反转变换?

时间:2013-04-15 08:46:06

标签: algorithm sql-server-2005 optimization integer bit-manipulation

我有几个整数(x,y),其中0 < y&lt; = x&lt; = 6.
我需要将它们存储在一列中,名为z。
我希望有三个函数F1,F2,F3来解决这个问题:

Z = F1(X,Y)
X = F2(z)的
y = F3(z)

我的第一个方法:

F1:10 * y + x
F2:(z-z%10)/ 10
F3:z%10

我必须在一个包含数百万行的表的WHERE子句中使用它 还有更好的主意吗?

1 个答案:

答案 0 :(得分:1)

我会用:

  F1 : z=10*x+y
  F2 : x=z/10
  F3 : y=z-F2*10 

也许,如果你拿16个基础,它会内在优化?我会尝试256的基数 - 因此一个数字位于一个字节。

F1 : z=256*x+y
F3 : y=z&255   // that is definitely faster
F2 : x=z/256

由于SQL服务器没有&gt;&gt;或&lt;&lt;操作员,这是结束,我担心。