首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在sql中搜索RFID的最快方法

在sql中搜索RFID的最快方法
EN

Stack Overflow用户
提问于 2020-12-15 00:16:59
回答 3查看 42关注 0票数 0

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

代码语言:javascript
复制
Where u.RFID1 = a And u.RFID2 = z And u.RFID3 = e And u.RFID4 = r " 

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

代码语言:javascript
复制
((RFID1*256+RFID2)*256+RFID)*256+RFID4 and search for that value.

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

有没有人有这方面的经验?(在我写测试代码之前...)

EN

回答 3

Stack Overflow用户

发布于 2020-12-15 00:19:33

如果你有4个不同的列,在这4个列上执行相等检查几乎总是更快,以便从这些列中计算出一些东西,并将其用于过滤。

所以:

代码语言:javascript
复制
where u.RFID1 = ? and u.RFID2 = ? and u.RFID3 = ? and u.RFID4 = ?

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

另一方面,如果您想对所有4列的计算结果进行过滤,那么一种替代方法是为表达式本身建立索引-如果您的数据库支持该功能:

代码语言:javascript
复制
create index myidx on mytable( (((RFID1 * 256 + RFID2) * 256 + RFID) * 256 + RFID4) )
票数 0
EN

Stack Overflow用户

发布于 2020-12-15 00:22:38

此外,另一个选择是创建一个计算列,甚至在其上放置索引,我认为这将是您在搜索中能获得的最佳性能:

sql server

代码语言:javascript
复制
alter table tablename
add column RFID as ((RFID1*256+RFID2)*256+RFID)*256+RFID4  --
go
create index myidx on mytable (RFID) 
票数 0
EN

Stack Overflow用户

发布于 2020-12-15 00:31:40

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

可以添加check约束以确保列中只能存储数字,如下所示

代码语言:javascript
复制
CONSTRAINT CK_MyTable_RFID_OnlyDigits CHECK (RFID not like '%[^0-9]%')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65292478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档