0

我有几个整数 (x,y),其中 0 < y <= x <= 6。
我只需要将它们存储到一个名为 z 的列中。
我想要三个函数 F1、F2、F3 来解决这个问题:

z=F1(x,y)
x=F2(z)
y=F3(z)

我的第一种方法:

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

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

4

1 回答 1

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-server 没有 >> 或 << 运算符,恐怕就这样结束了。

于 2013-04-15T09:21:07.173 回答