字符串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举例

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

被折叠的 条评论
为什么被折叠?



