Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
频繁更新的MYSQL手动问题varchar_Mysql - Fatal编程技术网

频繁更新的MYSQL手动问题varchar

频繁更新的MYSQL手动问题varchar,mysql,Mysql,MYSQL文档说: 对于经常更改的MyISAM表,应尽量避免使用所有可变长度列VARCHAR、BLOB和TEXT。如果该表甚至包含单个可变长度列,则该表使用动态行格式。参见第13章,存储引擎 我正在构建的表格将包含: 第1列:自动递增整数,设置为主键 然后是Varchar255的20列 300万行 varchar列将输入文本,通常大约100个字符,但在极少数情况下,最多可以输入255个字符。表的每次读取也会执行一次更新,数据被读取、处理,然后用新信息更新表,因此表上有很多更改。但这和上面引用的文

MYSQL文档说:

对于经常更改的MyISAM表,应尽量避免使用所有可变长度列VARCHAR、BLOB和TEXT。如果该表甚至包含单个可变长度列,则该表使用动态行格式。参见第13章,存储引擎

我正在构建的表格将包含: 第1列:自动递增整数,设置为主键 然后是Varchar255的20列 300万行

varchar列将输入文本,通常大约100个字符,但在极少数情况下,最多可以输入255个字符。表的每次读取也会执行一次更新,数据被读取、处理,然后用新信息更新表,因此表上有很多更改。但这和上面引用的文章所指的变化是一样的吗


我被告知这是一个非教科书式的设置,但它是专为速度而建的,而且还可以。所以,问题是上面的手动引用是否意味着我应该使用Char255而不是varchar来满足我的需要?

这就是本文所讨论的变化。Char255应该会产生更好的性能,但这将占用磁盘空间255字节的实际数据长度。此外,如果您这样做,您可能还必须向客户机代码中添加trim。 根据

存储CHAR值时,会使用空格右键填充到指定的长度。检索字符值时,将删除尾随空格

所以不必担心尾随空格,除非使用


这就是本文所讨论的变化。Char255应该会产生更好的性能,但这将占用磁盘空间255字节的实际数据长度。此外,如果您这样做,您可能还必须向客户机代码中添加trim。 根据

存储CHAR值时,会使用空格右键填充到指定的长度。检索字符值时,将删除尾随空格

所以不必担心尾随空格,除非使用


您可能需要澄清:您是一次读取/更新一行,还是一次读取/更新多行?这个表上有什么索引?您正在运行的一些选择/更新查询的示例是什么?是的,一次读取/更新一行,第一列是主键索引。从表1中选择*,其中id='id'。类似的单行更新,处理后更新到同一行。Ack,每次读取时更新!哦,关于行格式之类的问题,你问得对。继续,呵呵,你可能想澄清一下:你是一次读/更新一行,还是一次读/更新多行?这个表上有什么索引?您正在运行的一些选择/更新查询的示例是什么?是的,一次读取/更新一行,第一列是主键索引。从表1中选择*,其中id='id'。类似的单行更新,处理后更新到同一行。Ack,每次读取时更新!哦,关于行格式之类的问题,你问得对。继续,heheTrim删除字符串开头和结尾的空格。据我所知,每种语言都有这样的功能。这是mysql的。您也可以在您的客户端代码中执行此操作,例如PHP、Java、.NetW。它在这里的用途是什么?输入到表中的文本字符串通常为100到255个字符,并且在开头或结尾没有空格…直到您将字段更改为char255。然后可以在末尾添加空格来填充字段。这真的只是需要注意的事情。不同的客户端对固定长度的字符串执行不同的操作,例如char255@David19801Mysql自动修剪空白。看,什么专家回答了你的问题questions@Col.弹片。谢谢你的澄清。我已经更新了answerTrim,删除了字符串开头和结尾的空格。据我所知,每种语言都有这样的功能。这是mysql的。您也可以在您的客户端代码中执行此操作,例如PHP、Java、.NetW。它在这里的用途是什么?输入到表中的文本字符串通常为100到255个字符,并且在开头或结尾没有空格…直到您将字段更改为char255。然后可以在末尾添加空格来填充字段。这真的只是需要注意的事情。不同的客户端对固定长度的字符串执行不同的操作,例如char255@David19801Mysql自动修剪空白。看,什么专家回答了你的问题questions@Col.弹片。谢谢你的澄清。我已经更新了我的答案
For binary strings, all characters are significant in comparisons, 
including trailing spaces: 

mysql> SET NAMES binary;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT 'a ' = 'a';
+------------+
| 'a ' = 'a' |
+------------+
|          0 |
+------------+
1 row in set (0.00 sec)