哪个更快:多行还是多列?

     2023-02-23     42

关键词:

【中文标题】哪个更快:多行还是多列?【英文标题】:Which is faster: Many rows or many columns? 【发布时间】:2010-11-15 03:38:33 【问题描述】:

在 MySQL 中,返回 100 行 3 列还是 1 行 100 列通常更快/更高效/可扩展?

换句话说,当存储与记录相关的许多 key => value 对时,最好将每个 key => value 对存储在以 record_id 作为 key 的单独行中,还是每个 record_id 有一行每个键都有一列?

此外,还假设需要相当定期地添加/删除键,我认为一旦表变得足够大,这将影响多列方法的长期可维护性。

编辑:澄清一下,“定期”是指每月左右添加或删除一次密钥。

【问题讨论】:

【参考方案1】:

您不应该定期添加或删除列。

【讨论】:

定期每月一次。基本上,一旦您的应用程序投入生产,您永远不应该更改数据库模式。唯一的例外是您的业务需求发生了根本性的变化。 此答案没有回答问题,即具有更多列或更多行的架构是否会导致更快的查询。另外,这个答案没有任何解释,不反映软件开发的实际情况。我不明白为什么这个答案是“正确”的答案。【参考方案2】:

http://en.wikipedia.org/wiki/Entity-Attribute-Value_model

这个模型有很多不好的地方,如果有其他选择,我不会使用它。如果您不知道应用程序所需的大部分数据列(除了少数用户可自定义的字段),那么您需要花更多时间进行设计并弄清楚。

【讨论】:

【参考方案3】:

如果您的键是预设的(在设计时已知),那么是的,您应该将每个键放在单独的列中。

如果它们在设计时未知,那么您必须将数据作为键值对列表返回,稍后您应该在 RDBMS 之外对其进行解析。

【讨论】:

【参考方案4】:

如果您要存储键/值对,则应该有一个包含两列的表,一列用于键(将此作为表的 PK),另一列用于值(可能根本不需要此索引) .记住,“钥匙,整个钥匙,只有钥匙。”

在多列方法中,您会发现您的表无限制地增长,因为删除列会破坏所有值,您不会想要这样做。我在这里的经验是在一个遗留系统上工作的,该系统有一个包含近 1000 列的表,其中大部分是位字段。最终,您不再能够删除任何列,因为有人可能正在使用它,而您最后一次这样做时,您一直工作到凌晨 2 点才回滚备份。 p>

【讨论】:

【参考方案5】:

首先:确定您的数据需要被访问的频率。如果始终需要一次性检索数据并且大部分数据都已使用,则考虑将所有密钥对存储为序列化值或 xml 值。如果您需要对该数据进行任何类型的复杂分析并且您需要值对,那么列是可以的,但将它们限制为您知道需要执行查询的值。设计使用一列作为一个参数的查询通常比设计行更容易。您还会发现使用起来更容易 如果它们都在一行而不是多行,则返回值。

第二:把你最常访问的数据分开放在自己的表里,其他数据放在另一个表里。顺便说一句,100 列很多,所以我建议您将数据拆分成更易于管理的小块。

最后:如果您有可能经常更改的数据,那么您应该使用在一个表中创建列(键),然后使用它的数字键值来存储键值。这假设您将多次使用同一个键,并且应该在您进行查找时加快搜索速度。

【讨论】:

哪个更快,OpenTSDB 还是 KairosDB?

】哪个更快,OpenTSDB还是KairosDB?【英文标题】:Whichoneisfaster,OpenTSDBorKairosDB?【发布时间】:2015-07-0106:26:24【问题描述】:OpenTSDB超级快。KairosDB被称为OpenTSDB的重写,并声称它甚至比OpenTSDB(seehere)更快。但是,我在我的VirtualBox(5G... 查看详情

哪个更快?组合查询还是多个查询?

】哪个更快?组合查询还是多个查询?【英文标题】:WhichisFaster?CombinedorMultipleQueries?【发布时间】:2017-12-2320:56:45【问题描述】:这些查询在1millionrecord的表中的性能方面有什么不同吗?id是PRIMARYuserid是INDEXEDname是UNIQUE组合查询... 查看详情

哪个更快,水平计数还是垂直计数?

】哪个更快,水平计数还是垂直计数?【英文标题】:Whichisfaster,horizontalorverticalcounting?【发布时间】:2010-09-1721:46:53【问题描述】:我需要从很多行中获取摘要数据。汇总字段是对不同字段的每个值有多少条目的计数。例如,... 查看详情

get() 还是 merge() 哪个更快?

】get()还是merge()哪个更快?【英文标题】:Whichisfaster,get()ormerge()?【发布时间】:2014-05-1617:19:21【问题描述】:我有一个从DTO转换为要删除的休眠对象。因为这个对象没有附加到Session我不能直接删除它,它会导致一个NotUniqueObject... 查看详情

ArrayList 还是 LinkedList 哪个运行得更快? [复制]

】ArrayList还是LinkedList哪个运行得更快?[复制]【英文标题】:Whichonerunsfaster,ArrayListorLinkedList?[duplicate]【发布时间】:2013-09-1502:16:43【问题描述】:Listli=newLinkedList();for(inti=0;i<100;i++)li.add(i);longstart1=System.nanoTime();li.ge 查看详情

哪个更快? ++、+= 还是 x + 1?

】哪个更快?++、+=还是x+1?【英文标题】:Whichisfaster?++,+=orx+1?【发布时间】:2011-09-2214:32:02【问题描述】:我正在使用C#(这个问题也适用于C++等类似语言),我正在尝试找出最快、最有效的增量方式。这不仅仅是一两个增量... 查看详情

charAt() 还是子字符串?哪个更快?

】charAt()还是子字符串?哪个更快?【英文标题】:charAt()orsubstring?Whichisfaster?【发布时间】:2010-12-1222:42:04【问题描述】:我想遍历字符串中的每个字符并将字符串的每个字符作为字符串传递给另一个函数。Strings="abcdefg";for(inti=... 查看详情

哪个更快:JDBC 还是 JNDI?

】哪个更快:JDBC还是JNDI?【英文标题】:Whatisfaster:JDBCorJNDI?【发布时间】:2012-07-1501:28:39【问题描述】:我有两个选项来配置我的应用程序数据库连接-一个是使用JDBC,另一个是使用JNDI。就这些连接类型与数据库的工作速度而... 查看详情

MySQL:在 1:N 关系中哪个更快?加入还是两个查询? [复制]

】MySQL:在1:N关系中哪个更快?加入还是两个查询?[复制]【英文标题】:MySQL:Whichoneisfasterin1:Nrelationships?Joinortwoqueries?[duplicate]【发布时间】:2013-12-3103:48:12【问题描述】:考虑由main_table_id链接的两个表:http://www.zigdigital.com.br/do... 查看详情

radiogroup怎么设置多行多列的demo

参考技术A最近在工作的时候,需要用到一个多行多列的radioGroup,在网上找资料的时候,又找不掉合适的,所以只好自己写一个,同时也个那些需要这个功能的人一些参考;首先,我先分析了一下,我需要的仅仅是一个可以多行... 查看详情

有哪个文本编辑器可以像exce那样进行多行多列不连续选择的吗?

有哪个文本编辑器可以像EXCE那样进行多行多列不连续选择的吗?如图那样选中。参考技术A可以用UltraEdit32这个可以实现不连续文本选择,也能进行列查找列替换列选择,也可以像WORD那样进行普通文本处理,还可以进行编程格式... 查看详情

PHP 中哪个更快,$array[] = $value 还是 array_push($array, $value)?

】PHP中哪个更快,$array[]=$value还是array_push($array,$value)?【英文标题】:WhichisfasterinPHP,$array[]=$valueorarray_push($array,$value)?【发布时间】:2011-01-2618:15:16【问题描述】:在PHP中附加数组成员更好用,$array[]=$value;或array_push($array,$value);... 查看详情

Left JOIN 更快还是 Inner Join 更快?

...aster?【发布时间】:2010-12-2102:16:19【问题描述】:那么...哪个更快(NULl值不是问题),并且被索引。SELECT*FROMAJOINBbONb.id=a.idJOINCcONc.id=b.idWHEREA.id=\'12345\'使用左连接:SELECT*FROMALEFTJOINBONB.i 查看详情

按存储库排序与按列表排序哪个更快?

】按存储库排序与按列表排序哪个更快?【英文标题】:SortedbyrepositoryvsSortedbylistwhichoneisfaster?【发布时间】:2021-12-2902:12:53【问题描述】:所以我想知道哪个更快。按jpa存储库排序还是按列表排序?//sortedbykotlinlistfunctionpersonRepo... 查看详情

我应该使用 Any() 还是 Count() ?哪个更快?如果 IEnumerable 对象中存在任何数据,两者都会返回相同的输出(真或假)吗? [复制]

】我应该使用Any()还是Count()?哪个更快?如果IEnumerable对象中存在任何数据,两者都会返回相同的输出(真或假)吗?[复制]【英文标题】:WhichishoulduseAny()orCount()?Andwhichoneisfaster?Willbothreturnsameoutput(Trueorfalse)ifanydataexistsinIEnumerableo... 查看详情

sql多行多列数据清洗合并为一行

...数是用来分隔这些要合并的数据的,''中是你要用哪个符号来分隔,可以直接不填符号默认为空值;2 查看详情

行列转换之——多行转多列,多列转多行实践版(代码片段)

行列转换之——多行转多列,多列转多行实践版 1、多列转行(核心思想,利用row_number()over()来构造列传行之后的唯一列,来行转列)   要求:    实操演示:select‘a‘as‘a‘,‘b‘as‘b‘,‘c‘as‘c‘into#temp1un... 查看详情

多行成一行多列

】多行成一行多列【英文标题】:MultipleRowsintoOneRowmultiplecolumns【发布时间】:2019-08-1404:40:04【问题描述】:我们需要将所有数字作为一个平面数据集列出,我们该怎么做?表格名称:电话IDTYPENUMBER==================================123MN04... 查看详情