老师,对varchar类型和text类型有几个疑问的地方
来源:3-31 物理设计-为列选择适合的数据类型-建议2

ericdemon
2019-07-25
- ’ Text类型不会使用到内存临时表,只能用磁盘临时表 ’ , 如果我设置了 varchar(1100) , 那么varchar在这么长的字符上任然会使用内存临时表吗?还是说如果字符太长的话,只能用磁盘临时表?
- ‘Text类型在sql读取的时候会进行二次查找,性能会变得很差’ , 如果该列不存在索引树上的话,那么不是都需要回表做二次查找的吗?那么哪怕是varchar类型也需要做二次查找吧?
老师,因为在我身边的业务中,的确是遇到了这个问题,二次开发遗留下来的表结构中出现了部分Text字段类型且存在大表中,当时我做出的解决方案是讲类型改为varchar类型,但是因为文字太多,我不得不使用varchar(1100)这种设定很长的字符,然后今天看了您的视频,就有点困惑起来了
写回答
1回答
-
内存临时表没有可变长字符的类型,所以字符长度都是固定的,所以如果是varchar(1100)要使用内存临时表的话就会占用1100*字符集长度的字符,显然会十分的浪费内存,所以MySQL还是会使用磁盘临时表处理。
是的,不过TEXT类型会多一次查找操作,其实是超过762个字节的字符串都会进行这种操作。
032019-07-26
相似问题
老师,您好,这边我有一个疑惑
回答 1
老师问几个问题
回答 1