char()和VARCHAR()的主要区别是什么?
char 和 varchar 的区别是什么?
char(n) :固定长度类型,比如订阅 char(10),当你输入"abc"三个字符的时候,它们占的空间还是 10 个字节,其他 7 个是空字节。
char 优点:效率高;缺点:占用空间;适用场景:存储密码的 md5 值,固定长度的,使用 char 非常合适。
varchar(n) :可变长度,存储的值是每个值占用的字节再加上一个用来记录其长度的字节的长度。
所以,从空间上考虑 varcahr 比较合适;从效率上考虑 char 比较合适,二者使用需要权衡。
float 和 double 的区别是什么?
float 最多可以存储 8 位的十进制数,并在内存中占 4 字节。
double 最可可以存储 16 位的十进制数,并在内存中占 8 字节。
mysql左连接 右连接 内连接的区别
SQL的各种连接Join详解
1.内连接,显示两个表中有联系的所有数据;
2.左链接,以左表为参照,显示所有数据,右表中没有则以null显示
3.右链接,以右表为参照显示数据,,左表中没有则以null显示
MYSQL 用 explain 语句判断select查询是否使用了索引
MySQL 的相关优化
- MySQL 性能优化:组成、表的设计
开启查询缓存。避免某些 SQL 函数直接在 SQL 语句中使用,从而导致 Mysql 缓存失效。
避免画蛇添足。目的是什么就取什么,例如某个逻辑是只需要判断是否存在女性,若是查到了一条即可,勿要全部都查一遍,此时要善用 limit。
建合适的索引。所以要建在合适的地方,合适的对象上。经常操作 / 比较 / 判断的字段应该建索引。
字段大小合宜。字段的取值是有限而且是固定的,这种情况下可以用 enum,IP 字段可以用 unsigned int 来存储。
表的设计。垂直分割表,使得固定表与变长表分割,从而降低表的复杂度和字段的数目。
- SQL 语句优化:避免全表扫描
建索引:一般在 where 及 order by 中涉及到的列上建索引,尽量不要对可以重复的字段建索引。
尽量避免在 where 中使用 !(<>)或 or,也不要进行 null 值判断。
尽量避免在 where 中对字段进行函数操作、表达式操作。
尽量避免使用 like- %,在此种情况下可以进行全文检索。