我在MySQL中优化了一些innodb表,所以我运行了analsye()程序以查看建议是什么.
对于之前设置为varchar(255)的所有字段,结果建议使用tinytext而不是 varchar(255)
是否有一个性能增益,以通过使用了TINYTEXT?我只关心这里的速度,而不是尺寸.
据我所知,VARCHAR(255)一切都TINYTEXT可以做到.VARCHAR具有相同的存储大小,它是ISO标准的一部分,它允许除null之外的默认值.我看不出任何使用理由TINYTEXT.但它存在,所以也许是有原因的.
是否存在TINYTEXT大小,速度或其他考虑因素的首选数据类型?
表中的条目由 5-10 个字符长的单词唯一标识,并且我对列使用 TINYTEXT(10)。但是,当我尝试将其设置为主键时,我收到size丢失的错误。
根据我对文档的有限理解,Size主键可用于简化检测唯一值的方法,即当前几个字符(由 指定Size)足以将其视为唯一匹配时。在我的例子中,长度size从 5 到 10 不等(它们都是 latin1,所以它们是每个字符的精确字节 + 1 的长度)。两个问题:
size我应该指定哪个?在本例中最多可用 - 10?或者应该是size 严格精确的,例如,如果我的密钥是 6 个字符长的单词,但我将SizePK 指定为 10 - 它会尝试读取所有 10 个字符,并且会失败并抛出异常?这条线完美运作:
$mysqli->query("INSERT INTO `myDatabase`.`myTable`(Date,Time,SID) VALUES (1,2,3)");
Run Code Online (Sandbox Code Playgroud)
但这不是:
session_start();
$sessionID=session_id();
$mysqli->query("INSERT INTO `myDatabase`.`myTable`(Date,Time,SID) VALUES (1,2,$sessionID)");
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
session_start();
$sessionID=session_id();
$mysqli->query("INSERT INTO `myDatabase`.`myTable`(Date,Time,SID) VALUES (1,2,".$sessionID.")");
Run Code Online (Sandbox Code Playgroud)
所有表行都定义为TINYTEXT.
MySQL中的varchar/text/longtext列是否占用文件系统中的全长大小,即使是不完整的单元格?
以博客文章为例,我有以下几列,并在其中添加了一个给定的字符串.
CHAR (72) - can store upto 72 characters - i put in a string "abcd"
VARCHAR (72) - can store upto 72 characters - i put in a string "abcd"
TINYTEXT - can store upto 255 characters - i put in a string "abcd"
TEXT - can store upto 65,535 characters - i put in a string "abcd"
LONGTEXT - can store upto 4,294,967,295 characters - i put in a string "abcd"
Run Code Online (Sandbox Code Playgroud)
一行中每列的实际物理空间占用多少?
每列能够存储的完整大小?
或者只有存储"abcd"所需的数量?