我在SQL数据库中有一个字符串,表示一个URL。有些网址很短,有些很长。我真的不知道这是我可能遇到的最长的URL,所以为了安全起见,我会采用较大的值,例如256或512。
当我定义最大字符串长度时(例如,使用SQLAlchemy):
url_field = Column(String(256))
即使实际的字符串较短,这是否也会占用每一行的空间(存储空间)?
我假设这与实现细节有关。我正在使用postgreSQL,但对sqlite和mysql也很感兴趣。
通常,数据库存储引擎可以完成许多您不期望的事情。但基本上,有两种文本字段可以提示内部将发生什么。
char和varchar。Char将为您提供一个固定的字段列,并且根据sql会话中的选项,您是否会收到空格填充的字符串。Varchar用于不超过一定最大长度的文本字段。
可以将Varchar字段作为指针存储在该块的外部,以便该块在查询中保持可预测的大小-但这是实现细节,并且可能因数据库而异。