我没有亲身经历,但是这个人做了:
快速回答:varchar更快一点.
编辑 - 不,它不是.他对它们进行了不同的索引 - 他在varchar(255个字符)上有一个完整的索引,但在文本上有一个255个字符的前缀索引.当他删除它时,它们或多或少地表现相同.
后来在线程中是这个有趣的花絮:
当SELECT需要一个tmp表时,第一个选择是使用MEMORY,它只是RAM,因此可能明显更快.(第二个选择是MyISAM.)但是,MEMORY中不允许使用TEXT和BLOB,因此无法使用它.(还有其他原因可能会跳过MEMORY.)
编辑2 - 一些更相关的信息,这次比较不同指数处理各种类型的方式.
MyISAM把TEXT和BLOB'内联'.如果你正在搜索一个表(范围扫描/表扫描),你正在"踩过那些牛圈" - 磁盘I/O成本很高.也就是说,在这种情况下,内联blob的存在会损害性能.
InnoDB只将767字节的TEXT或BLOB内联,其余的进入其他块.这是一种妥协,有时会有所帮助,有时会伤害性能.
其他东西(Maria?Falcon?InnoDB插件?)将TEXT和BLOB完全放在其他地方.与VARCHAR相比,这会在性能上产生明显的差异.有时TEXT会更快(例如,不需要blob的范围扫描); 有时VARCHAR会更快(例如,如果您需要查看和/或返回它).
| 归档时间: |
|
| 查看次数: |
3292 次 |
| 最近记录: |