在我的项目中,用户可以编写评论[纯文本],查看其他评论,可以删除自己的评论,但不能更新评论!在这种情况下,我应该使用哪个?
Text 或 Varchar(4048)?
Text 和 Varchar(大约4000)有什么优缺点?
如果我只用'<'替换'& lt;'和'>'替换'& gt;',那么它是否足够安全?
[我不想转换所有这些内容,例如'" & ...',以节省空间,我只想确保用户无法编写JavaScript]
前端会有限制。
前端会有限制。
当大小合理时,Varchar在检索时通常更快,因为它存储在表内,而TEXT则存储在表外并带有指向位置的指针。
谢谢
ROW_FORMATs
。 VARCHAR(4000)
和TEXT
都受此影响,因此这实际上并没有什么区别。 - Rick James您有多个问题,我将解答标题中的一个问题。
VARCHAR(4000)
和TEXT
之间唯一的区别是,INSERT
会分别截断为4000个字符或65536个字节。
对于小于4000的值,在复杂的SELECT
中临时表将使用VARCHAR(255)
比TINYTEXT
更快。基于这个原因,我认为从来不应该使用TINYTEXT
。
这取决于应用程序的行为。在块表内分配的空间会减少其他列的空间,并降低其中的数据密度。如果MySQL使用全表扫描,则会扫描许多块,这是低效的。因此,这取决于您的SQL请求。