相关疑难解决方法(0)

长列如何影响性能和磁盘使用?

在我们当前的项目中,它经常发生,我们需要将列扩展几个字符。从varchar(20)varchar(30)等等。

在现实中,真正重要的有多少?这优化有多好?只允许 100 或 200 甚至 500 个字符用于正常的“输入”字段有什么影响?一封电子邮件只能有 320 个字符,所以可以 - 有一个很好的限制。但是如果我将它设置为 200,我会得到什么,因为我不希望电子邮件地址比这更长。

通常我们的表不会超过 100.000 行,最多 20 或 30 个这样的列。

我们现在使用 SQL Server 2008,但了解不同的数据库如何处理这个问题会很有趣。

如果影响非常低 - 正如我所期望的那样,这将有助于获得一些好的论据(有链接支持?)来说服我的 DBA,这种长期的偏执并不是真正必要的。

如果是的话,我是来学习的:-)

sql-server-2008 database-design datatypes

28
推荐指数
4
解决办法
2万
查看次数

varchar 性能影响

之前已经问过这个问题(在 SQL Server 2008 中使用 varchar 的速度影响),但答案不够详细,令我满意。诚然,这不是当前的问题,主要是针对我的教育。

但是,我将尝试将其作为我正在做的一些当前数据库模式工作的具体示例;

选项 A

CREATE TABLE [VMware].[TblHostSystem](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    <snip/>
    [PowerStateID] [int] NOT NULL
)

ALTER TABLE [VMware].[TblHostSystem]  WITH
CHECK ADD  CONSTRAINT [FK_TblHostSystem_TblPowerState]
FOREIGN KEY([PowerStateID])
REFERENCES [VMware].[TblPowerState] ([ID])
GO

CREATE TABLE [VMware].[TblPowerState](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [PowerState] [varchar](50) NOT NULL
)
Run Code Online (Sandbox Code Playgroud)

选项 B

CREATE TABLE [VMware].[TblHostSystem](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    <snip/>
    [PowerState] [varchar](50) NOT NULL
)
Run Code Online (Sandbox Code Playgroud)

如果我选择了选项 B(正如模式的前任作者所做的那样),由于主机的功能会经常变化,这会产生什么样的流失?

一些我认为是真实的陈述,

  1. Varchar 存储在 MSSQL 2008 上的同一行/页中。
  2. Varchars 没有填充?

所以我的问题是,当将第二个示例中的 …

performance sql-server-2008 varchar

6
推荐指数
1
解决办法
1508
查看次数