mysql使用小记

       最近用mysql写了几个复杂的语句,感觉在关系很复杂的时候先理清关系再选择用的查询方法是很重要的,因为同一个需求可能用不同的方法来查出来,但是复杂度,性能都不一样。

      下面说一下能实现复杂查询的一些一般方法:

一.with语法(首先说明,好像Mysql不支持这个语法,但是sqlserver是支持的),即with tableA as select .... from table B。相当于在数据库中建立了一个临时表。其实我喜欢这种语法,因为看起来像是面向对象的,结构清晰。


二.建立临时表,即create temporary table{...},其他类似了,但是网上说这种方法开销很大,建议考虑性能的应用慎用。


三.嵌套查询,即select a,b from (select a* as a, b* as b from A*) as A...,这是很常用的方法,也很好用,性能应该也不错。


四.各种连接,即select a ,b,c from A inner join B inner join C, 这种结构上倒是也很清晰,但是最大的缺点就是冗余数据太多,增加系统负担,因为表中的列你都给连接过来了,而实际上是根本用不了这么多的(可能只需要每个表中特定的几列),这样造成连接后的表太庞大了,性能应该很差 。 所以在你确定冗余数据不多时,可以用这种方法。


自己的心得,可能也不完全。其实真正用的时候是几种方法结合起来更好,比如

select a,b from (select a* as a from A*) as A inner join (select b* as b from B*) as B on A.some=B.some where a='hello';

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值