mysql优化探索(7)几种使用sql语句的技巧(sql优化)

1.使用regexp进行正则表达式的语句

查询包含@163.com或者@163,com的记录:

select first_name,email from customer where email regexp '@163[,.]com$';

查询的字符串是否以a开头:

 查询的字符串是否以g结尾:

 查询的字符串是否包含一个或多个h,查询的字符串是否包含一个或多个f:

查询的字符串时候包含fhk中的其中之一个字母:

 

 查询的字符串是否不包含xyz其中之一的字母,不包含返回1,包含返回0:

 2.rand()函数返回排序好的随机几条数据,做抽样抽查很有用:

 3.group by +with rollup 让统计的数据增加合计信息,但是with rollup 不能和order by语句一同使用,因为两者互斥:

4.group by语句和bit_or或操作函数和bit_and与操作函数,可以让统计行的整列做或操作和与操作:

比如一家商店卖啤酒、牛奶、香肠、方便面,怎样可以统计出某个用户每次去商店都买了哪个商品。我们就可以用二进制0000 四位记录每个顾客每次来超市都买了啤酒、牛奶、香肠、方便面中的什么商品。位置上1就是买了位置上为0就是没买,比如1010就是说明该顾客这次来超市买了啤酒和香肠,然后把二进制在转化成10进制数字存起来。

这样的话我们就可以统计每个用户来超市都买过什么商品:

上面结果5转为二进制就是0101说明顾客1买过牛奶和方便面,顾客2是7转为二进制是0111说明顾客2买过牛奶、香肠、方便面。

统计每个顾客每次来超市都会买的商品:

 顾客1结果4转为二进制是0100表示顾客1每次来超市都买香肠,顾客2结果是0 转为二进制是0000,表时没有哪个商品是顾客2每次来超市都被购买的。

 

 5.注意外键的建立语句如constraint fk_userid_id foreign key(userid) references users2(id) 在myisam引擎是不起作用的,只有在innodb引擎中才起作用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值