带有“列表”条目的SQL表与每个条目有一行的SQL表
我有一个Sqlite
表,其中每一行的forms是:
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行,每个“list”元素平均有8个条目。 我标记Sqlite
和MySQL
因为我有一个与MySQL
和Sqlite
的数据库类似的问题。
在我的查询查找值的配对,%b%使用LIKE。 在查询时间方面更有效率,而不是有一个表,其中每一行是一个排列:
明确地。 因为LIKE'%something%'types的查询不能使用索引 。 所以你看上去会很慢。 如果这还不够,那么你正在使用一个RDBMS反模式。 更多的细节在这里: 存储在数据库列中的分隔列表真的很糟糕?
一旦将“CSV”列分成不同的列,您可以通过规范化数据库来进一步进行处理。