表格中的最大列数,哪个是正确的?

问题描述 投票:0回答:3

SQLite3 表中的最大列数是多少?我找到了答案:

最大列数 最大列数为 32767 桌子。 SQLITE_MAX_COLUMN 的默认设置是 2000。

但是当列数为 1000 时,我看到超出最大列数的错误。

那么哪一个是正确的?

sqlite
3个回答
5
投票

我认为你自己已经回答了你的问题。

根据此处的官方文档此处

最大列数

SQLITE_MAX_COLUMN 编译时参数用于设置上限:

  • 表中的列数索引中的列数

  • 视图中的列数 SET 子句中的项数 UPDATE 语句的结果集中的列数 SELECT 语句 GROUP BY 或 ORDER BY 子句中的项数

  • INSERT 语句中的值的数量

SQLITE_MAX_COLUMN 的默认设置是 2000。您可以在编译时将其更改为大到 32767 的值。

另一方面,许多经验丰富的数据库设计者会认为,一个良好规范化的数据库永远不会需要表中超过 100 列。

其他使用此问题的完整答案可以在这里找到:How to change SQLITE_MAX_COLUMN in Python?

这里:如何增加 SQLite 中表的列限制?


3
投票

SQLITE_MAX_COLUMN 的默认设置是 2000。您可以在编译时将其更改为大至 32767 的值。另一方面,许多经验丰富的数据库设计人员会认为,良好规范化的数据库永远不需要表中超过 100 列.

https://sqlite.org/limits.html

有关增加列限制的说明,请参阅此链接。

https://dba.stackexchange.com/questions/221508/how-to-increase-column-limit-of-a-table-in-sqlite


3
投票

您的问题没有通用答案。正如您已经发现的,最大可配置列数是 32767。但是,关键是它是可配置的,因此可以调整。比较 https://www.sqlite.org/limits.html

可以使用 sqlite3_limit(db,SQLITE_LIMIT_COLUMN,size) 接口在运行时降低最大列数。

在您的情况下,限制似乎已设置为 1000,因为您显然遇到了该限制。然而,上面的页面继续说

[...]许多经验丰富的数据库设计者会认为,一个良好规范化的数据库永远不需要表中超过 100 列。

因此,您可能想要增加 SQLITE_MAX_COLUMN 设置,或者重新考虑您的数据库设计。

© www.soinside.com 2019 - 2024. All rights reserved.