什么是更快。查询许多小桌子或大桌子

时间:2011-11-25 11:04:04

标签: database database-design

使用数据库编程通常会更快:查询许多小表,或者更好地拥有一个大表?

4 个答案:

答案 0 :(得分:0)

我认为你的问题没有客观的答案,除非你不再解释问题(数据库/语言),否则决定可以基于多个场景。

我想在X之前回答Y.

如果记录属于“相同”类型,则不建议将其拆分为多个表。

如果记录可能是不同类型的。将其拆分为表[数据库规范化]强烈建议,因为较大的表将包含空记录和生猪空间。

回到你的问题,

如果将其分段太多,则外键查找可能会影响性能。所以有一个甜蜜点。

此外,如果数据的连接是在应用程序级别以python等语言进行的,那么如果数据连接在数据库本身中完成,则数据连接可能会比较慢。大多数高级关系数据库,支持嵌套循环。实现这一目标。

答案 1 :(得分:0)

我不认为这样的表的大小应该是你的标准......现代关系数据库可以很快地从数百万行中拉出一行 - 这真的不是一个问题。

你应该做的是设计你的桌子,使他们有意义,例如包含一个实体,只包含一个实体。不要开始将多个实体混合到一个表中......

与C#应用程序中的类一样,数据库表应始终只处理一个责任(或关注)。不要将不同的数据存储到单个数据中 - 只是为了获得感知的性能优势......

答案 2 :(得分:0)

通常,在其他条件相同的情况下,查询一个表比查询多个表要快得多,以获得相同的数据。

加入很贵。

答案 3 :(得分:0)

我知道这违反了规范化规则,但是在当今的PC世界中,内存便宜但速度却昂贵,因此,如果我们有一台性能低下的PC和要运行的大型数据库, ,最好打破规范化规则并在一个表中具有额外的字段,以免我们被迫与另一个表进行联接。 假设我们有3个具有(多个)关系的相关表,例如[table_Customers] 1->许多[table_Orders] 1->许多[table_Order_Items],因此通过在[table_order_Items]中添加一个额外的[Customer_id]字段不需要连接,所有连接都在一个大表中,的确确实是浪费内存,但是当使用速度较慢的PC时,极大地提高了速度和性能。