这些表模式中的哪一个最适合性能(列与行)?
Which of those Tables Schema is Best for Performance (Columns vs. Rows)?
我必须使用 Table 模式中的两个之一,
First Schema:
SELECT *
FROM `posts`
WHERE `id` = '1'
----
id title content col1 col2 col3
1 Title1 Content1 A B C
Second Schema:
SELECT p.*, GROUP_CONCAT(c.`col` ORDER BY `col_number`) AS cols
FROM `posts` p
LEFT JOIN `cols` c ON c.`pid` = p.`id`
WHERE p.`id` = 1;
----
id title content cols
1 Title1 Content1 A,B,C
在这两种情况下,对于 post
table 中的每个 记录 ,我仅限于 three cols
,并且会像这样收集它们array
如 第二个模式 A,B,C
在性能上使用哪种架构重要吗?
我知道的是:
第一个架构 可以在 col2, col3
上有 NULL
。
Second Schema 将没有 NULL cols
除非某些列在 value
之前更新为 NULL
除了 col_number = 1
的ROW
.
在这两种情况下,它们都有 NULL cols
值,Second Schema NULL cols
可以是 DELETED
,但我没有知道是保留它还是 DELETE
它们更好。
简要说明:哪种 Schema 更适合性能?将 NULL col
保留在 Second Schema 或 DELETE
中更好吗?
永远不要将事物列表存储为分隔字符串。时期。您可以将它们存储为 JSON 或 XML 或使用其他方法,但在字符串中存储多个值是个坏主意。
因此,第一种方法是更好的方法。在性能方面,两者对于基本查询应该非常相似。第一个允许您在每个列上创建索引,这对某些目的很有帮助。
space 用法非常相似。您正在谈论字符串与定界符的长度字节。
但是对于关系建模,没有问题。单独的列 - 甚至关联中的单独行 table - 是正确的解决方案。
我必须使用 Table 模式中的两个之一,
First Schema:
SELECT *
FROM `posts`
WHERE `id` = '1'
----
id title content col1 col2 col3
1 Title1 Content1 A B C
Second Schema:
SELECT p.*, GROUP_CONCAT(c.`col` ORDER BY `col_number`) AS cols
FROM `posts` p
LEFT JOIN `cols` c ON c.`pid` = p.`id`
WHERE p.`id` = 1;
----
id title content cols
1 Title1 Content1 A,B,C
在这两种情况下,对于 post
table 中的每个 记录 ,我仅限于 three cols
,并且会像这样收集它们array
如 第二个模式 A,B,C
在性能上使用哪种架构重要吗?
我知道的是:
第一个架构 可以在 col2, col3
上有 NULL
。
Second Schema 将没有 NULL cols
除非某些列在 value
之前更新为 NULL
除了 col_number = 1
的ROW
.
在这两种情况下,它们都有 NULL cols
值,Second Schema NULL cols
可以是 DELETED
,但我没有知道是保留它还是 DELETE
它们更好。
简要说明:哪种 Schema 更适合性能?将 NULL col
保留在 Second Schema 或 DELETE
中更好吗?
永远不要将事物列表存储为分隔字符串。时期。您可以将它们存储为 JSON 或 XML 或使用其他方法,但在字符串中存储多个值是个坏主意。
因此,第一种方法是更好的方法。在性能方面,两者对于基本查询应该非常相似。第一个允许您在每个列上创建索引,这对某些目的很有帮助。
space 用法非常相似。您正在谈论字符串与定界符的长度字节。
但是对于关系建模,没有问题。单独的列 - 甚至关联中的单独行 table - 是正确的解决方案。