数据库优化:扁平化表与 CSV 列
设计数据库时,将数据存储在带有逗号的单列中的决定- 总是会出现分隔值 (CSV) 或使用每个条目一行的扁平表格。本文深入探讨了这些方法的性能影响,重点关注涉及过滤或搜索的查询。
考虑一个包含以下形式行的 SQL 表:
value, "a,b,c,d,e,f,g,h,i,j", value3, value4
其中查询搜索对like 值,%b% 使用 LIKE 运算符。
相比之下,扁平表会将每个排列作为单独的row:
value, a, value3, value4 ... value, j, value3, value4
允许查询对值使用 = 运算符,b.
对于此特定用例,大约有 10,000 行,每个“列表”元素平均有 8 个条目,对性能的影响是显着的。
LIKE 查询无法利用索引,导致查找速度变慢。此外,将数据存储在单个 CSV 列中是一种反模式,可能会影响数据库性能。
将 CSV 列分解为单独的列并规范化数据库将显着提高效率。通过这样做,可以利用索引,并且可以将 LIKE 运算符替换为 = 运算符,从而加快查询速度。
以上是扁平化表与 CSV 列:哪种数据库设计可提供更好的查询性能?的详细内容。更多信息请关注PHP中文网其他相关文章!