Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 哪个更快:在一个大的非规范化表上查找,还是在三个较小的表之间联接?_Mysql_Sql_Database_Performance_Join - Fatal编程技术网

Mysql 哪个更快:在一个大的非规范化表上查找,还是在三个较小的表之间联接?

Mysql 哪个更快:在一个大的非规范化表上查找,还是在三个较小的表之间联接?,mysql,sql,database,performance,join,Mysql,Sql,Database,Performance,Join,我有一个非规范化的表,其中有100000条记录。我可以将其标准化为一个少于50条记录的表,以及前面提到的表和另一个10000条记录的表之间20000条记录中的多条到多条记录。在100000条记录中查找或将10000条记录中的一条连接到多对多的关系中,速度更快吗?引用是非常受欢迎的,因为我不相信我能同时测试这两个条件 通常,如果适当的索引到位,select语句的非规范化表将更快,但在某些情况下,非规范化表的性能会更差。 它取决于相对行宽度。如果将占非规范化表行宽度很大百分比的列剔除,并且生成的表的

我有一个非规范化的表,其中有100000条记录。我可以将其标准化为一个少于50条记录的表,以及前面提到的表和另一个10000条记录的表之间20000条记录中的多条到多条记录。在100000条记录中查找或将10000条记录中的一条连接到多对多的关系中,速度更快吗?引用是非常受欢迎的,因为我不相信我能同时测试这两个条件

通常,如果适当的索引到位,select语句的非规范化表将更快,但在某些情况下,非规范化表的性能会更差。 它取决于相对行宽度。如果将占非规范化表行宽度很大百分比的列剔除,并且生成的表的行数要小得多,那么由于缓存更好,规范化结构可能会更快(表的内存占用要小得多)

在您的例子中,您应该知道100K记录是一个非常小的数据库,您可能
不应该让绩效成为变革背后的驱动因素。除了性能之外,规范化还有许多好处。

通常,如果有适当的索引,select语句的非规范化表将更快,但在某些情况下,非规范化表的性能会更差。 它取决于相对行宽度。如果将占非规范化表行宽度很大百分比的列剔除,并且生成的表的行数要小得多,那么由于缓存更好,规范化结构可能会更快(表的内存占用要小得多)

在您的例子中,您应该知道100K记录是一个非常小的数据库,您可能
不应该让绩效成为变革背后的驱动因素。除了性能之外,标准化还有很多好处。

我完全取决于具体情况。结果集有多大?查询所需的列上是否有覆盖索引

非规范化模型的“优点”是所有列都位于一个位置;缺点很多,但从性能角度来看,这意味着您的行很宽,因此每页的行数较少。这意味着查询必须从磁盘获取更多页面才能找到所需内容

一般来说,一个适当规范化的数据模型(例如第三范式)将表现得相当好。是的,您的查询将更加复杂,但它给表带来的是窄行(每页行数更多,意味着给定查询的读取次数更少)。此外,查询将使用的连接条件更有可能具有覆盖索引,这意味着连接可能表现良好

但是如果不知道细节,就不可能说。找到答案的唯一方法是检查特定查询的查询计划

数据去规范化非常容易。标准化数据要困难得多,因为所有重复、重复的数据都可能有……需要解决的差异。正确的数据模型:应用程序是暂时的,但[好的]数据是永久的/


在出现问题之前进行非规范化是一种过早优化的情况。

我完全取决于具体情况。结果集有多大?查询所需的列上是否有覆盖索引

非规范化模型的“优点”是所有列都位于一个位置;缺点很多,但从性能角度来看,这意味着您的行很宽,因此每页的行数较少。这意味着查询必须从磁盘获取更多页面才能找到所需内容

一般来说,一个适当规范化的数据模型(例如第三范式)将表现得相当好。是的,您的查询将更加复杂,但它给表带来的是窄行(每页行数更多,意味着给定查询的读取次数更少)。此外,查询将使用的连接条件更有可能具有覆盖索引,这意味着连接可能表现良好

但是如果不知道细节,就不可能说。找到答案的唯一方法是检查特定查询的查询计划

数据去规范化非常容易。标准化数据要困难得多,因为所有重复、重复的数据都可能有……需要解决的差异。正确的数据模型:应用程序是暂时的,但[好的]数据是永久的/


在出现问题之前进行非规范化是一种过早优化的情况。

单个表可能会更快地给出结果,但规范化会简化维护并提供更大的灵活性。单个表可能会更快地给出结果,但规范化会简化维护并提供更大的灵活性。我忘了提到我将要查询的另一个非规范化表。午饭后我会编辑我的问题,并尝试计算列数。重要的不仅仅是列数,而是列宽。啊,宽度,我误读了。我有两个VARCHAR(64),但这些都是高估的(我可以减少它们)。除此之外,我还有两个重点,一个是长文,一个是短文。我的第二个非规范化表与之完全相同,有70000条记录、一个额外的BIGINT和一个额外的VARCHAR(64)。如果该列的平均大小很大,实际上是冗余持久化的,并且经常与行的其余部分一起查询,然后我会怀疑规范化会对性能产生积极影响。所有这些都是在警告100K数据库很小的情况下进行的,我建议不要花费大量时间在性能优化上,而代价是致力于易于维护的设计。我忘了提另一个非规范化的ta