mysql关键字 char,varchar,in,exist

本文探讨了数据库中char和varchar两种字符串类型的差异,char适合存储固定长度数据,如MD5,检索效率高;varchar则适用于可变长度字符串,节省空间。在查询优化方面,讲解了IN与EXISTS的用法,指出exists子查询可利用索引提高效率,而NOT IN可能导致全表扫描。理解这些原理有助于提升SQL查询性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字符串char,varchar

char(n),固定长度的字符串类型,最大存储字节255,一般用于存储MD5等固定长度的字符串,其检索效率高于varchar,举例:若char(10),则存储的字符串大于10字节,则减短,若存储的字节小于10,则使用空字节填充。

varchar(n),可变长度的字符串类型,最大存储字节数65535,存储结构为字符串长度+1个字节,其中1个字节用于存储字符串的长度。若存储不固定长度字符串,则优先使用varchar。

关键字in,exists

IN 运算符用于 WHERE 表达式中,以列表项的形式支持多个选择,当 IN 前面加上 NOT 运算符时,表示与 IN 相反的意思,即不在这些列表项内选择。使用in时,sql语句先执行子查询,再查主表。根据小表驱动大表的原则,如果主查询的表较大且又有索引时应该用in,反之,若外层的主查询记录少,子查询中的表大,又有索引时使用exists。

注意:

1,exists查询结果不会返回具体的数据,只是返回True或者False

2,若查询中使用了not in,则内外表都要进行全表扫描,没有用到索引,而not exists子表查询仍可以使用索引,故not exists效率高于not in

exists举例

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值