假设一个字段如此声明:
VARCHAR(255)
可以存储多少个字符,是255还是256?并且使用了多少空间?
我们应该使用2的幂然后减1,还是无关紧要?
答案 0 :(得分:2)
在MySQL中,<header>
<h1>FLEXBOX LAYOUT PROOF OF CONCEPT</h1>
</header>
<div class="layout__body">
<main class="layout__content">
<div id="absolutepositioned">FIXED!</div>
<div style="color: #00FFFF;"><b>the blue box should be here</b> </div>
</main>
<nav class="layout__nav layout__columns">
NAV ITEMS<br> NAV ITEMS<br> NAV ITEMS<br> NAV ITEMS<br> NAV ITEMS<br> NAV ITEMS<br> NAV ITEMS<br> NAV ITEMS<br> NAV ITEMS<br> NAV ITEMS<br>
</nav>
<aside class="layout__aside layout__columns">YOUR VIAGRA ADS HERE</aside>
</div>
<footer> FOOTER
</footer>
将使用varchar(255)
(最大值)来存储数据,使用255 bytes
来存储有关该数据的元数据(长度信息)。基本上,它将是1 byte
。现在,您可以在2^8
中存储多少个字符取决于您正在使用的字符集。
您需要解决的字节数&amp;存储字符取决于字符集总共有多少个字符。
答案 1 :(得分:0)
VARCHAR(255)
最多可以存储255个字符,无论字符集编码所需的每个字符的字节数是多少。
存储要求是存储的实际数据的长度(不是最大值),加上1或2个字节来存储数据的长度 - 除非以字节为单位的最大可能长度,否则使用1个字节。 255 ...所以VARCHAR(255) COLLATE utf8mb4
使用2个字节来存储长度,而VARCHAR(255) COLLATE ascii_general_ci
使用1个字节来存储长度。任何一列都可以存储不超过255个字符。
根据存储的数据声明列大小。使用255是常见的,但通常是草率设计的红旗,因为这个特定值很少有意义地表示列的最大适当长度。
相比之下,CHAR(255) COLLATE utf8mb4
每行每列消耗255×4(最大可能)字节,并且存储长度为0字节,因为存储的长度不变。这些列很少适用,除非列始终是已知长度且字符集是单字节,例如UUID,它将是CHAR(36) COLLATE ascii_general_ci
。
https://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html#data-types-storage-reqs-strings