1、手机号存储
使用BIGINT代替CHAR或者VARCHAR存放手机号码。
这是因为CHAR或者VARCHAR,占用空间大,影响查询性能。 例如:11位手机号CHAR存储,utf8编码,则占用33个字节; 使用如果使用INT的话,INT最大只能保存10为数据,而手机号为11位,会出现溢出,所以使用BIGINT占用8个字节,支持11为数据存储。
2、IP地址可以使用INT存储
MySQL里提供了一个很好的函数:INET_ATON()
,他负责把IP地址转化为数字,而另一个函数INET_NTOA()
负责将数字转化为IP地址,示例如下:
//存储
mysql> insert into test values(1,INET_ATON('192.168.1.213'));
//取出
mysql> select id,INET_NTOA(ip) from test;
3、尽量避免使用or来作连接条件
//原查询语句
select id from t where num=10 or num=20
//修改后的语句
select id from t where num=10 union all select id from t where num=20
4、in 和 not in 也要慎用,否则会导致全表扫描
//慎用
select id from t where num in(1,2,3)
5、对于连续的数值,能用 between 就不要用 in 了
//between代替in或者><
select id from t where num between 1 and 3