我有一个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个条目。我标记了Sqlite
和MySQL
,因为我对包含MySQL
和Sqlite
的数据库都有类似的问题。
答案 0 :(得分:3)
我的查询在哪里查找值的配对,%b%使用LIKE。是吗 在查询时间方面更有效率,而不是有一个表在哪里 每一行都是一个排列:
绝对是最好的。因为LIKE'%something%'类型查询cannot use indexes。所以你看起来很慢。如果这还不够,那么你几乎就是使用RDBMS反模式。更多详情:Is storing a delimited list in a database column really that bad?
将“CSV”列拆分为单独的列后,您可以通过规范化数据库进一步了解它。