sql数据库一行最多插入多大的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql数据库一行最多插入多大的问题相关的知识,希望对你有一定的参考价值。

sql数据库一行最多插入8060字节,
那如果我想插入9000字节的一篇文章或者一张10000字节的图片呢?
这个行是不是限制得太小了?

你好。

在SQL server2000中,一个数据库中最多可以创建20亿个表,每个表最多可以定义1024个列(字段),每行最多可以存储8060字节,表的行数及总大小仅受可用存储空间的限制。

SQL 2005中尽管突破了这一限制,但是劝你不要用。我有惨重的教训,2005版一般安装的是未注册版。它可以免费使用,但是库文件不能超过2048M,也就是2G大小。可以续加新库DATA文件,但是总的大小不允许超过2G。

到时就知道了。后悔都来不及。
参考技术A SQL Server中以数据页为基本数据存贮单元,一个数据页最大就是8060字节,在SQL Server2000下,提交数据行的长度超过时,就不允许操作。虽然SQL Server2005虽然允许,但是也不建议这样做。

text,image类型并不是此数据页中保存数据,而是通过一个指针来指向另一个存贮空间。

建议使用image类型保存超大数据

如果需要查询此字段的中内容,可以对此字段使用全文索引来优化查询。本回答被提问者采纳
参考技术B ntext、text 和 image
用于存储大型非 Unicode 字符、Unicode 字符及二进制数据的固定长度和可变长度数据类型。Unicode 数据使用 UNICODE UCS-2 字符集。

ntext

可变长度 Unicode 数据的最大长度为 230 - 1 (1,073,741,823) 个字符。存储大小是所输入字符个数的两倍(以字节为单位)。ntext 在 SQL-92 中的同义词是 national text。

text

服务器代码页中的可变长度非 Unicode 数据的最大长度为 231-1 (2,147,483,647) 个字符。当服务器代码页使用双字节字符时,存储量仍是 2,147,483,647 字节。存储大小可能小于 2,147,483,647 字节(取决于字符串)。

image

可变长度二进制数据介于 0 与 231-1 (2,147,483,647) 字节之间。
参考技术C mircosoft也认识到这个问题,如果您使用sql2005,就可以使用其新的字符型varchar(max),其字符几乎无限制,只要有足够的硬盘空间。 参考技术D 建议用oracle

SQL:我应该插入另一列还是解析每一行

【中文标题】SQL:我应该插入另一列还是解析每一行【英文标题】:SQL : should I insert another column or parse every single row 【发布时间】:2014-06-17 00:55:01 【问题描述】:

假设有数百万行 SQL 格式的交通数据。 从URL 列和给定范围的每一行,我想得到一个与目标标签匹配的子字符串文本。

例如,从URL 列中,我有以下文字:

Column: `URL`
Row 1: http://www.google.com/abcdeft?&QQ=123&AA=america&YY=111
Row 2: http://www.google.com/abcdeft?&QQ=123&AA=asia&YY=111
Row 3: http://www.google.com/abcdeft?&QQ=123&AA=africa&YY=111
Row 4: http://www.google.com/abcdeft?&QQ=123&AA=south&YY=111
Row 5: http://www.google.com/abcdeft?&QQ=123&AA=south&YY=111
Row 6: http://www.google.com/abcdeft?&QQ=123&AA=&YY=111
Row 7: http://www.google.com/abcdeft?&QQ=123
...
Row 99999999: http://www.google.com/abcdeft?&QQ=123&AA=ddd&YY=111

不断加载大量更新的数据。所以性能确实很重要。我的目标是:

    用其唯一的键标签&AA= 标识每一行。基本上我需要从每一行中获取标签&AA= 中的字符串。例如,我想要来自~~&AA=africa&~~africaNone 如果没有 &AA= 但仍需要读取每一行。

    识别在&AA= 中包含相同标签的重复行。例如第 4 行和第 5 行是重复的,因为它们具有相同的 AA 标签 south

问题:未来数据处理的最佳方式是什么?

选项 1。没有URL

读取URL 列中的每一行 使用urlparse 库解析标签&AA= 的每一行 需要单独的脚本来查找具有相同AA 标记的重复行。例如使用 Python,我需要列出所有项目(所有标签)并在列表中找到重复的项目。 需要单独的查询来查找包含重复标签的行。例如查询URL列中包含重复项的行 专门为此任务创建单独的列似乎相对可行

选项 2。为标签&AA= 插入另一个新列AA,并在更新流量数据时开始填写新列。

这样:

无需阅读专栏URL 无需解析URL中的文字得到标签&AA= 无需从一个查询中查找重复项 - 无需从另一个查询中获取包含重复项的行

这样,我们可以很容易地:

只需选择列AA即可获取&AA=数据 SELECT 在 SQL 中使用 COUNT 函数重复行

哪个会更好?

【问题讨论】:

请提供您的银行详细信息,以便我们知道向您汇款的地方以便有机会编写此代码。换句话说...您尝试过什么? 规范化你的数据库怎么样?如果你不知道这意味着什么,我听说过《数据库设计》一书的好消息。 Is your dataset related to this guy?取决于您进行重复搜索的频率,但您很可能需要一个单独的列(或一个或多个其他可能性)。 【参考方案1】:

如果您能承受增加一列的额外空间成本,那么这将是最佳方法。如果 AA 有很多重复项,您可能会考虑将其放在另一个表中,然后加入它以进行查询。这将减少空间成本,并且仍然为您提供所有灵活性。如果您查询的是 ID 而不是 AA 的文本值,它会更容易(查询更快)。

【讨论】:

以上是关于sql数据库一行最多插入多大的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何将地理批量插入新的 sql server 2008 表

PHP中的SQL插入两行而不是一行

“Azure ML 如何通过插入一行数据库将数据导出到 SQL 数据库”。

C#/SQL 监听器告诉我一行是不是已插入到表中

在数据库中添加一行的SQL语句怎么写?

sql server一个表能存多少条记录