Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.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/7/sql-server/24.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
Sql 创建新表或在现有表中添加列更好的方法是什么_Sql_Sql Server - Fatal编程技术网

Sql 创建新表或在现有表中添加列更好的方法是什么

Sql 创建新表或在现有表中添加列更好的方法是什么,sql,sql-server,Sql,Sql Server,在我的数据库中,我有一个付款表 paymentid、金额、截止日期、批准代码、状态、交易ID等 付款表已经有15列 如果我想在paymentid上存储小费、税款、销货 什么更好 创建具有一对一关系的新paymentdetails表 或 是否在同一付款表中添加列 请帮忙 付款表几乎有50000多条记录。那么什么对数据库真正有好处呢。对于如此小的表,我看不出有什么理由不将新列放入现有表中 如果你愿意,你会这么做的 您达到了RDBMS的某种限制(列数、表的总大小) 列中的数据非常庞大,仅用于少数查询

在我的数据库中,我有一个付款表 paymentid、金额、截止日期、批准代码、状态、交易ID等

付款表已经有15列

如果我想在paymentid上存储小费、税款、销货

什么更好

创建具有一对一关系的新paymentdetails表

是否在同一付款表中添加列

请帮忙


付款表几乎有50000多条记录。那么什么对数据库真正有好处呢。

对于如此小的表,我看不出有什么理由不将新列放入现有表中

如果你愿意,你会这么做的

  • 您达到了RDBMS的某种限制(列数、表的总大小)
  • 列中的数据非常庞大,仅用于少数查询

一般来说,我的工作前提是某物/实体/对象的属性应该存储在某物/实体/对象上。通常,只有当存在一对多关系时,我才会拆分为一个新表,因此属性具有多个值(例如,person和qualifications hold)

我会将它们添加到付款表中-尽管您可能有一个订单表,它们更适合与之相关


但是,您需要记住是否需要对这些列使用索引-如果添加索引,您可能会使表负担过重并降低性能,但您可能只会在联接中使用列的情况下添加索引,而它们听起来不像是您需要联接的那种情况。

阅读E-R和普通表单以了解如何做出正确的决策。50000行实际上并不多。如果该列数据不会在每个查询中使用,然后我可以创建新表,对吗?如果我在同一个表中添加列,是否存在任何性能问题?当我使用join时,如果列数据不会在每个查询中使用,那么我可以创建新表,对吗?这个问题有点倒退。通常情况下,您希望列位于同一个表中。只有当其他事情迫使您这样做时,您才会创建一个新表。您总是可以在一个新表中创建列,但您几乎不应该这样做。只有当其他事情迫使您这样做时,您才会创建一个新表??没有得到你??jens的最后一个问题是,如果所有新列的值都是空的,那么你能解释一下吗?如何创建新表或现有加载项我仍然将其放在同一个表中。如果在同一个表中添加列,是否存在性能问题?当我使用join时。bcz此新列在每个查询中都不有用。通常,当我想在Report中显示时,添加数字/十进制列不会对性能产生影响,因为它们是非常紧凑的数据类型。如果使用十进制(10,2),很可能只会为每列添加一个字节。如果我的新列是PaymentReceive数据类型是text,那么?非常大的列如果它非常大并用于WHERE、JOIN和GROUP BY子句,则可能会降低性能。收据数据可能不会用于报告,只保留用于审计目的,因此不需要通过需要快速响应的查询返回。我将通过创建一个具有相同结构的临时表加上有问题的列(填充了一些虚拟数据)来测试关键报告的潜在影响,并查看它的性能。在以后的某个日期,您可以将该列移动到表中,以便对其进行积极的优化,但现在请坚持使用重要的内容:-)