在实际的工作和学习中,建表时记录的长度越短越好,越短则IO操作越少,查询越快。能用int就不要用bigint,而如果能用tinyint是最好的。定义varchar时按照业务需要设置长度,不要一律varchar(255),这样虽然并不会增加储存空间,但如以前提过的MySQL使用临时表是会把 varchar字段变成char,这样会增加临时表的大小,降低查询速度。同样的道理,对于不会使用utf8的字段(如:email, url),也不要用utf8的格式,因为MySQL必须为char(10)保留30个字节。用指明not null的时候也最好指明,这样也可以减少记录的长度。
使用查询示例:
select sql_buffer_result address from user;
注:使用sql_buffer_result是强制使用临时表。表内有102000条记录,当address为varchar(255)时用时0.7秒,假如更改为varchar(30)则时间减少为0.2秒。