最近在做数据库迁移的项目,将MsSql数据库迁移到MySql上,单纯是修改Dal层的连接与处理方式即可,但是为了服务的性能进行了稍微的数据库查询优化。
1.关于子查询,在mySql中尽量少用子查询的方式,这种方式可能造成性能差。在此可以使用Join联表查询来代替子查询。
2.关于Join,上面说把子查询搞成Join,但是又有问题了,Join的次数不能太多,我们使用的是innoDB引擎,最好的Join的次数不要超过2次,所以处理Join的方式是使用多次查询的方式
例如,有三张表,ABC,将两张表Join之后查询到cId,在将cId作为参数查C表,同事介绍了使用In方法,即select XXX from C where Id in(,,,,,,);我换成in之后发现性能并没有提升
(当然,In这个性能是有个数限制,需要根据自己的数据类型来确定),后来发现是因为我表中字段是有Text类型还是mediumText,所以瓶颈在这,在执行sql时,99%的时间消耗在
send data上,令我很惆怅。