Oracle BLOB 与 VARCHAR
我需要在表的列中存储(大型)SQL 查询,并且我想使用 BLOB 字段。需要明确的是,我想存储查询,而不是其结果。
最好使用什么:BLOB
还是 VARCHAR
?或者也许还有别的什么?
I need to store a (large) SQL query in a column of a table and I thought using a BLOB
field. To be clear, I want to store the query, not its result.
What's best to use: BLOB
or a VARCHAR
? Or something else maybe?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
另一种选择是 CLOB。对于文本数据,使用 CLOB 比使用 BLOB 更符合逻辑。即使您不必分析数据库中的数据,使用 CLOB 可能仍然有意义,因为甚至查看数据也更容易。
某些功能只能使用 VARCHAR 来使用。例如,您只能在 VARCHAR 列上创建索引(这里我不是在谈论全文索引,我知道您可以在 CLOB 列上创建全文索引)。您不能有 CLOB 或 BLOB 主键(我想您不需要它;仅作为示例)。
大多数 VARCHAR 操作比 CLOB / BLOB 操作快得多。如果使用 VARCHAR,甚至读取数据也会更快(除非列中确实有很多文本)。 VARCHAR 需要较少的内存开销,但它们通常会在内存中完全读取,因此最后 VARCHAR 可能仍会使用更多内存。
Another option is CLOB. For text data it's more logical to use CLOB than BLOB. Even if you don't have to analyze the data within the database it might still make sense to use CLOB, because even viewing the data is easier.
Some features are only available using VARCHAR. For example, you can only create an index on VARCHAR columns (I'm not talking about fulltext index here, I know you can create a fulltext index on a CLOB column). You can't have a CLOB or BLOB primary key (I guess you don't need that; just as an example).
Most VARCHAR operations are much faster than CLOB / BLOB operations. Even reading data is faster if you use VARCHAR (unless there is really a lot of text in the column). VARCHAR needs less memory overhead, but they will usually be fully read in memory, so at the end VARCHAR might still use more memory.
如果您要存储无法放入
VarChar2
的文本数据,那么我认为您应该使用CLOB
。引用OraFaq: *CLOB(字符大对象)是一种 Oracle 数据类型,可以容纳至 4 GB 数据。 CLOB 可以方便地存储文本。 *
If you're going to store text data that can't fit in a
VarChar2
then I think you're supposed to use aCLOB
.Quote from OraFaq: *A CLOB (Character Large Object) is an Oracle data type that can hold up to 4 GB of data. CLOB's are handy for storing text. *
短字符串 → VARCHAR
长字符串 → CLOB
二进制数据 → BLOB
Short strings → VARCHAR
Long strings → CLOB
Binary data → BLOB
他们都是不同的。
您可以使用
BLOB
来存储二进制数据,例如图像、音频和其他多媒体数据。和
VARCHAR
用于存储任意大小的文本(不超过限制)。They are both different.
You use
BLOB
to store binary data like an image, audio and other multimedia data.and
VARCHAR
to store text of any size up to the limit.