gpt4 book ai didi

mysql - 哪些表架构最适合性能(列与行)?

转载 作者:行者123 更新时间:2023-11-29 10:23:12 25 4
gpt4 key购买 nike

我必须选择两个表模式之一,

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

在这两种情况下,我都仅限于 three cols对于 post 中的每条记录表,并将像array一样收集它们如第二个架构 A,B,C

性能上使用哪种模式重要吗?

我所知道的是:

第一个架构可以有 NULLcol2, col3 .

第二个架构将没有 NULL cols除非某些列已更新为 NULL拥有value之后之前除了col_number = 1ROW .

<小时/>

在这两种情况下,它们都会有 NULL cols值,第二个架构 NULL cols可以是DELETED ,但不知道是保留好还是DELETE他们。

<小时/>

简单地说:哪种架构性能更好?保留NULL col是不是更好?在第二架构DELETE中他们?

最佳答案

您永远不应该将事物列表存储为分隔字符串。时期。您可以将它们存储为 JSON 或 XML 或使用其他方法,但在字符串中存储多个值是一个坏主意。

因此,第一种方法是更好的方法。就性能而言,对于基本查询,两者应该非常相似。第一个允许您在每列上创建索引,这对于某些目的很有帮助。

空间使用情况非常相似。您正在谈论字符串的长度字节与分隔符。

但是对于关系建模来说,这是没有问题的。单独的列——甚至关联表中的单独的行——是正确的解决方案。

关于mysql - 哪些表架构最适合性能(列与行)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48856560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com