【问题标题】:Whats the best SQLite data type for a long string什么是长字符串的最佳 SQLite 数据类型
【发布时间】:2012-03-18 03:38:59
【问题描述】:

在 SQLite3 中,我将存储一个很长的字符串,看起来像这样:

string linkList = "www.blah.com,www.meh.com,www.hah.com"; 

肯定会超过 255 个字符,可能会超过 1000 个字符

linkList 列是否应该是 varcharTEXT 或其他存储可能超过 1000 个字符的字符串的内容

CREATE TABLE(uId INT PRIMARY KEY, linkList varchar);

linkList 列使用的最佳变量类型是什么?

【问题讨论】:

  • TEXT 是标准数据类型。如果您关心存储要求(或者您可以只压缩数据库),您可以将其压缩,然后将其放入 BLOB
  • 有人可以存储段落吗,如果可以,最大限制是多少,会降低应用程序的性能吗?
  • 每个表列都有一个类型关联(BLOB、TEXT、INTEGER、REAL 或 NUMERIC 之一)。所以它 varchar 和 text 是相同的sqlite.org/datatype3.html

标签: sql sqlite


【解决方案1】:

你应该use TEXT

虽然,这和VARCHAR是一回事:

如果列的声明类型包含任何字符串“CHAR”、“CLOB”或“TEXT”,则该列具有 TEXT 关联。请注意,类型 VARCHAR 包含字符串“CHAR”,因此被分配了 TEXT 亲和性

还有:

请注意,SQLite 会忽略类型名称后面的括号中的数字参数(例如:“VARCHAR(255)”) - SQLite 不会对字符串的长度施加任何长度限制(除了大的全局 SQLITE_MAX_LENGTH 限制) 、BLOB 或数值。

“SQLite 没有任何长度限制”

【讨论】:

    【解决方案2】:

    其实SQLite中的所有数据类型都无所谓,所有的数据都会以字符串的形式存储。 您可以执行查询CREATE TABLE(uId INT PRIMARY KEY, linkList BlahBlahString); 没有任何错误。 SQLite 中的数据类型仅用于 sql 兼容性

    【讨论】:

      【解决方案3】:

      您有 2 种选择将长 String 存储在 SQLite

      1. TEXT type - SQLite 支持很长的文本(我不知道确切的数字,但我测试了 33000 char SQLite3)
      2. BLOB 类型:可以使用BLOB 数据类型来保存长字符串。

      【讨论】:

      • BLOB 的长度限制是多少? (这也没有太多的性能滞后。)
      【解决方案4】:

      TEXT(VARCHAR 和其他类似的 TEXT)的大小限制默认为 100 0000 000 字节
      寻找宏SQLITE_MAX_LENGTH

      可以增加(或减少,但除了代码健全性之外没有任何好处) 使用
      int sqlite3_limit(sqlite3 *db, int limitId, int newLimit)
      SQLITE_LIMIT_LENGTH 用于 limitId

      再次重申:除了需要超过 ~100MB(或通过 trowing execption 来保证代码健全性)之外,我认为修改默认值没有任何兴趣。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-21
        • 1970-01-01
        • 2011-09-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-27
        相关资源
        最近更新 更多