在MySQL表中存储大量文本?

时间:2016-11-13 19:40:56

标签: mysql

我有下表:

Name (Int), Id (Int), Description (VARCHAR)

我遇到的问题是描述可能是一段文字(超过100个字符)。

我的问题

1)VARCHAR是否是存储此类数据的合适数据类型?

2)MySQL是否是这种数据的理想存储解决方案,还是应该考虑写入文件?

N.B。我不会查询描述,只是存储数据。

1 个答案:

答案 0 :(得分:1)

MySQL(从5.7版开始)在BLOB列中最多支持65,535个字节。请注意,行的长度(所有列的组合最大大小)也是65,535字节。因为它使用UTF-8,所存储的字符数可能小于此限制(因为UTF-8每个字符使用不同数量的字节)。

请注意,在数据库中,100个字符的存储要求并不重要。像这样的数据库系统可以在一行中存储许多千字节,甚至更大的数据(单个值大小以千兆字节为单位)可以存储在blob列中(TEXTTEXT)。

如果您不想查询数据,如果数据长度可能超过65KiB,那么您应该使用function clearTimerForInput($input) { var timerId = $input.data('timerId'); if (timerId) { clearTimeout(timerId); $input.removeData('timerId') } } function updateServerForInput($input) { var jqXhr = $input.data('jqXhr'); clearTimerForInput($input); // Abort an existing ajax call. // Note: The call still gets to the server, // but its response will be ignored. if (jqXhr) { jqXhr.abort(); $input.removeData('jqXhr'); } // Update the current value. $input.data('currentValue', $input.val()); // Make the ajax call. $input.data('jqXhr', $.ajax({ // ... }); } $('#myTable') .on('focus', ':input', function() { var $input = $this; $input.data('currentValue', $input.val()); }); .on('keyup paste', ':input', function() { var $input = $this; clearTimerForInput($input); // Note: Not all keyup events will change the value. if ($input.val() != $input.data('currentValue')) { $input.data('timerId', setTimeout(function() { updateServerForInput($input); }, 2000); } }); .on('blur', ':input', function() { var $input = $this; if ($input.val() != $input.data('currentValue')) { updateServerForInput($input) } }); 数据类型,它将大尺寸值存储在不同的物理存储位置中使数据查找更昂贵,并阻碍索引。