带有“list”条目的SQL表vs SQL表,每个条目都有一行

时间:2016-12-19 04:08:51

标签: mysql sqlite

我有一个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行,其中每个“list”元素平均有8个条目。我标记了SqliteMySQL,因为我对包含MySQLSqlite的数据库都有类似的问题。

1 个答案:

答案 0 :(得分:3)

  

我的查询在哪里查找值的配对,%b%使用LIKE。是吗   在查询时间方面更有效率,而不是有一个表在哪里   每一行都是一个排列:

绝对是最好的。因为LIKE'%something%'类型查询cannot use indexes。所以你看起来很慢。如果这还不够,那么你几乎就是使用RDBMS反模式。更多详情:Is storing a delimited list in a database column really that bad?

将“CSV”列拆分为单独的列后,您可以通过规范化数据库进一步了解它。