如何去写一手好SQL
join的实现是采用Nested Loop Join算法,就是通过驱动表的结果集作为基础数据,通过该结数据作为过滤条件到下一个表中循环查询数据,然后合并结果。如果有多个join,则将前面的结果集作为循环数据,再次到后一个表中查询数据。 驱动表和被驱动表尽可能增加查询条件,满足ON的条件而少用Where,用小结果集驱动大结果集。 被驱动表的join字段上加上索引,无法建立索引的时候,设置足够的Join Buffer Size。 禁止join连接三个以上的表,尝试增加冗余字段。 Limit优化 limit用于分页查询时越往后翻性能越差,解决的原则:缩小扫描范围,如下所示:
耗时0.4秒
耗时5.2秒 先筛选出ID缩小查询范围,写法如下:
耗时0.5秒 如果查询条件仅有主键ID,写法如下:
耗时0.3秒 如果以上方案依然很慢呢?只好用游标了,感兴趣的朋友阅读JDBC使用游标实现分页查询的方法 其他数据库作为一名后端开发人员,务必精通作为存储核心的MySQL或SQL Server,也要积极关注NoSQL数据库,他们已经足够成熟并被广泛采用,能解决特定场景下的性能瓶颈。 ![]() ![]() 【编辑推荐】
点赞 0 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |