AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 4479
Accepted
Martin
Martin
Asked: 2011-08-09 22:18:29 +0800 CST2011-08-09 22:18:29 +0800 CST 2011-08-09 22:18:29 +0800 CST

缩小 VARCHAR 列的大小有什么意义吗?

  • 772

在那里谷歌搜索似乎是混合报告VARCHAR2Oracle 中列的大小是否影响性能。

我想VARCHAR稍微扭曲一下大小的问题,并希望对此有所了解:

给定要存储在(Oracle)数据库中的(多行)自由文本字段(不是名称之类的短内容),在不最大化VARCHAR容量(VARCHAR2(4000)在 Oracle 上)但选择较小的值,例如 1024 或 512,因为无论如何这在 98% 的情况下可能就足够了。

oracle performance
  • 3 3 个回答
  • 4179 Views

3 个回答

  • Voted
  1. Best Answer
    Gary
    2011-08-09T23:07:49+08:002011-08-09T23:07:49+08:00

    它确实会影响内存使用,尤其是当客户端程序必须分配足够的内存来接收数据集时。

    请记住,许多应用程序(尤其是 Web 应用程序)使用 UTF-8,它是一种多字节字符集。因此,您应该真正考虑字符而不是字节。

    如果我期待超过一千个字符,那么我会积极考虑使用 CLOB。我会考虑它是否会存储纯文本或某种形式的标记(wiki / html?),与非欧洲语言一起使用。例如,这里的问题和答案是 CLOB,但注释可以放在 VARCHAR 中。

    如果你最大限度地使用 VARCHAR,那么在六个月内有人会想要让它再次变大,而你会因为不使用 CLOB 而自责。

    • 12
  2. Jack Douglas
    2011-08-09T22:55:36+08:002011-08-09T22:55:36+08:00

    通常没有性能考虑因素,尽管有一些对您来说可能很重要的问题。a 的限制varchar应该被视为与任何其他限制一样的约束——它在那里执行业务规则。

    IMO 您应该问的问题是“我是否要防止存储在此字段中的自由文本数据长于nvarchar(512)字节/字符”-这是在和之间进行选择时的唯一决定因素varchar(4000)。

    请注意,我假设您正在谈论varcharSQL 类型 - 情况有所不同,pl/sql选择长度对于内存分配的原因可能至关重要。

    • 9
  3. Leigh Riffel
    2011-08-10T03:34:09+08:002011-08-10T03:34:09+08:00

    如果较小的值适用于 98% 的情况,但需要 Varchar2(4000) 才能适用于 100% 的情况,那么您别无选择,只能使用较大的值。为 2% 的值创建一个单独的表,然后协调插入/选择等会增加复杂性,从而消除不扩展字段带来的任何内存或性能优势。

    • 4

相关问题

  • 如何在数据库中找到最新的 SQL 语句?

  • 如何使用正则表达式查询名称?

  • 如何确定是否需要或需要索引

  • 我在哪里可以找到mysql慢日志?

  • 如何优化大型数据库的 mysqldump?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    您如何显示在 Oracle 数据库上执行的 SQL?

    • 2 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    我可以查看在 SQL Server 数据库上运行的历史查询吗?

    • 6 个回答
  • Marko Smith

    如何在 PostgreSQL 中使用 currval() 来获取最后插入的 id?

    • 10 个回答
  • Marko Smith

    如何在 Mac OS X 上运行 psql?

    • 11 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Marko Smith

    将数组参数传递给存储过程

    • 12 个回答
  • Martin Hope
    Manuel Leduc PostgreSQL 多列唯一约束和 NULL 值 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler 什么时候应该将主键声明为非聚集的? 2011-11-11 13:31:59 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    BrunoLM Guid vs INT - 哪个更好作为主键? 2011-01-05 23:46:34 +0800 CST
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +0800 CST
  • Martin Hope
    Patrick 如何优化大型数据库的 mysqldump? 2011-01-04 13:13:48 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve