我有一张Sqlite表格,其中每一行都是以下形式:
Sqlite
value, "a,b,c,d,e,f,g,h,i,j", value3, value4
凡我查询寻找的价值配对,%b%使用LIKE。就查询时间而言,改为使用一个表(其中每行是一个排列)是否更有效:
%b%
LIKE
value, a, value3, value4 ... value, j, value3, value4
这样,我这次使用=运算符查询了值b。
值得注意的是,我感兴趣的用例当前有大约10,000行,其中每个“列表”元素平均有8个条目。我同时标记了两者Sqlite,MySQL因为使用MySQL和的数据库都存在类似的问题Sqlite。
MySQL
我的查询在其中使用LIKE寻找一对值,%b%。就查询时间而言,改为使用一个表(其中每行是一个排列)是否更有效:
明确地。因为LIKE’%something%’类型查询不能使用index。因此,您的查找将会非常缓慢。如果这还不够,那么您将使用RDBMS反模式。这里有更多详细信息:在数据库列中存储定界列表真的那么糟糕吗?
将“ CSV”列分为不同的列后,您可以通过规范化数据库来进一步扩展它。