首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >存储和检索数字列表的最佳方式

存储和检索数字列表的最佳方式
EN

Stack Overflow用户
提问于 2010-03-26 04:12:32
回答 1查看 839关注 0票数 2

存储和检索随机数(如彩票/宾果号码)列表的最佳方式是什么?我想在数据库中存储一些行,其中每行包含5-10个数字,范围从0到90。我将存储大量的这些行。我希望能够检索与新生成的行至少有X个公共编号的行。

示例:

代码语言:javascript
复制
[3,4,33,67,85,99]
[55,56,77,89,98,99]
[3,4,23,47,85,91]

这些都在数据库上

我将生成以下代码:[1,2,11,45,47,88],现在我希望获得与此至少有1个共同数字的行。

最简单(也是最愚蠢的?)方法是选择6个,并检查相似的结果。

我想用像000000000000000000000100000000010010110000000000000000000000000这样的大型二进制字符串存储数字,其中包含99个数字,其中每个数字代表一个从1到99的数字,所以如果我在第44位有1,这意味着我在该行有44个数字。这种方法可能会将困难的任务转移给数据库,但它也不是很聪明。

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-03-26 04:18:06

您应该像这样创建一个表:

代码语言:javascript
复制
TicketId Number
1        3
1        4
1        33
1        67
1        85
1        99
2        55
2        56
2        77
etc...

那么你的查询,至少对于X= 1,变成:

代码语言:javascript
复制
SELECT DISTINCT TicketId FROM Ticket WHERE Number IN (1, 2, 11, 45, 47, 88)

这样做的好处是,您可以使用索引而不是全表扫描。

对于大于1的X,可以执行以下操作:

代码语言:javascript
复制
SELECT TicketId, COUNT(*) AS cnt
FROM Ticket WHERE Number IN (1, 2, 11, 45, 47, 88)
GROUP BY TicketId
HAVING COUNT(*) >= 3

同样,这将能够使用索引。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2519014

复制
相关文章

相似问题

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