当前位置: 首页 > 面试题库 >

带“列表”条目的SQL表与带每个条目一行的SQL表

徐杰
2023-03-14
问题内容

我有一张Sqlite表格,其中每一行都是以下形式:

value, "a,b,c,d,e,f,g,h,i,j", value3, value4

凡我查询寻找的价值配对,%b%使用LIKE。就查询时间而言,改为使用一个表(其中每行是一个排列)是否更有效:

value, a, value3, value4
...
value, j, value3, value4

这样,我这次使用=运算符查询了值b。

值得注意的是,我感兴趣的用例当前有大约10,000行,其中每个“列表”元素平均有8个条目。我同时标记了两者SqliteMySQL因为使用MySQL和的数据库都存在类似的问题Sqlite


问题答案:

我的查询在其中使用LIKE寻找一对值,%b%。就查询时间而言,改为使用一个表(其中每行是一个排列)是否更有效:

明确地。因为LIKE’%something%’类型查询不能使用index。因此,您的查找将会非常缓慢。如果这还不够,那么您将使用RDBMS反模式。这里有更多详细信息:在数据库列中存储定界列表真的那么糟糕吗?

将“ CSV”列分为不同的列后,您可以通过规范化数据库来进一步扩展它。



 类似资料:
  • 问题内容: | uId | title | amount | makers | widgets | 1 richard 998 xcorp sprocket 2 swiss 995 ycorp framitz 3 ricky 90 zcorp flobber 4 ricky2 798 xcorp framitz 1 lilrick 390 xcorp sprocket 1 brie 200 mco

  • 问题内容: 我有两张桌子。表和表。两者都有多对多的关系。 表A: 表B: 表AB: 我想要得到的名单,从表S =该有关系 的名单表第。 上表中的示例: 我想所有这些都表的关系小号 1和2,我得到那么3具有这两个表第。 如何使用SQL查询做到这一点? 问题答案: 如果要基于“不作为”列表(而不是“全部”作为)进行选择,请按照以下步骤操作: 用您的列表替换,并在having子句中替换为列表项的数量。

  • 问题内容: 如何从频道中订购最新的3个条目,而每个条目都来自不同的作者?(因此,它们最终不会成为同一作者的3个最新条目)-我想我需要为此使用SQL查询吗? 提前致谢! 问题答案: 马克-这是我在另一个重复问题上发布的答案的转发: 由于需要解析自定义字段,因此此处的最佳方法是,首先查找来自不同作者的最新4个条目的entry_id,然后使用参数通过嵌入将其传递给标签。 这应该起作用(确保将替换为适当的

  • 我有一个清单如下: 我想做的是遍历mylist并生成如下所示的新列表: 换句话说,制作一个列表列表,其中每个列表包含初始列表条目的唯一组合,这样一个字母在结果列表的每个条目中不会出现两次。而且,每次将一个条目添加到result中时,我们都从初始列表的可用组合集合中抽象出它的子元素。(我猜给出的例子比解释更清楚)。

  • 问题内容: 全部, 我敢肯定这是一个非常简单的SQL查询问题,但是我敢肯定有一个很好的方法,也很糟糕的方法来做到这一点。留给我自己的设备,我有可能以后者结束。所以… 我在Access中有一个表,其中的数据如下所示: 我想要获取的是每个具有唯一“截止日期”日期(采用YYYYMM格式)的唯一ID的“值”。 因此,我的结果集应如下所示: 请注意,不同的ID将具有不同的“截止日期”日期。换句话说,我不能简