鉴于我们在关系数据库中有一个大表,我们需要查询。
我们有两种选择:
这种分离是否有意义?
是否依赖于查询结构?
让我们添加一些数学。给定一些查询执行时间与n ^ 3成比例,其中n是表中的行数。这意味着在第一种情况下查询执行时间与n ^ 3成比例。至于第二种选择 - 它的不同。总时间为(n / 3)^ 3 +(n / 3)^ 3 +(n / 3)^ 3 = n ^ 3/9,这样更好。
现实生活更复杂:在这种情况下查询不一样,我们不得不花一些时间将行限制为子集。
也可以限制数据库的连接数和并发数,因此我们无法通过10个查询同时查询它,例如,至少以相同的速度查询。
但这些理由是否有意义?这有助于减少一些大桌子的时间费用吗?
答案 0 :(得分:0)
这取决于很多标准。其中一些是:
数据库有多忙?这就是多少并行查询 跑?
原因:如果有大量查询正在运行或任何具有多个并行会话的查询,那么在大表上查询将会很慢,而较小的查询会更快。
< / LI>将较大的表分成多少个较小的表?
原因:这里要考虑的一点是,如果一张大桌子被分开了 在几个小表中运行查询并在每个较小的表上运行查询,然后需要聚合各个结果。这可能需要一些时间,具体取决于查询。
正在执行查询类型
原因:如果您正在运行对列具有过滤条件的查询,并根据该列的值划分大表,则可以根据查询条件跳过某些表,因此减少了产出时间
总体而言,在这种情况下,不要将大表分成较小的表,最好对表进行分区。范围分区可以在更大的表上使用,以加快查询执行速度。