在sql中搜索RFID的最快方法



在sql中搜索RFID的最快方法是什么?如果具有具有4个字节作为标识符的RFID,这样我就可以搜索

Where u.RFID1 = a And u.RFID2 = z And u.RFID3 = e And u.RFID4 = r " 

或者我可以把RFID做成一个大的

((RFID1*256+RFID2)*256+RFID)*256+RFID4 and search for that value.

SQL中最快的是什么?我的猜测是bigint(1列而不是4列(

有人有这方面的经验吗?(在我写测试代码之前…(

如果您有4个不同的列,那么对4列执行相等性检查几乎总是更快,从这些列中计算出一些内容并将其用于筛选。

因此:

where u.RFID1 = ? and u.RFID2 = ? and u.RFID3 = ? and u.RFID4 = ?

这可以利用(RFID1, RFID2, RFID3, RFID4)上的索引。

另一方面,如果你想过滤所有4列的计算结果,那么一种选择是对表达式本身进行索引——如果你的数据库支持这个功能:

create index myidx on mytable( (((RFID1 * 256 + RFID2) * 256 + RFID) * 256 + RFID4) )

还有一个选项是制作一个计算列,甚至在上面加一个索引,我认为这将是搜索中最好的性能:

sql server

alter table tablename
add column RFID as ((RFID1*256+RFID2)*256+RFID)*256+RFID4  --
go
create index myidx on mytable (RFID) 

由于这是一个四个字符的代码,并且(大概(总是四个字符,您不能将其作为一个单独的CHAR(4)列有什么特殊的原因吗?当然,这可以被编入索引。

可以添加一个检查约束,以确保只有数字可以存储在列中,类似于

CONSTRAINT CK_MyTable_RFID_OnlyDigits CHECK (RFID not like '%[^0-9]%')

相关内容

  • 没有找到相关文章

最新更新