简介
最近学习sql,其实原来一直瞧不起觉得sql有什么难的,结果发现,你虽然能达到你想要的结果,但是效率比人家慢了一倍。
如果数据量再大个几十倍呢,那可就不是几百毫秒的差别了。
多表合并
先来看看我的写法:
select FirstName, LastName, City, State
from Person left join Address
on Person.PersonId=Address.PersonId;
我一看这也太简单了,结果用时
排名80%开外。唉~~ 静下心来
这里分享一个大佬的思路
作者:xksa
链接:https://leetcode-cn.com/problems/combine-two-tables/solution/joinji-ben-shi-yong-by-xksa/
来源:力扣(LeetCode)
其实说起来还是比较简单的,就是我们将表中的重复数据删掉,这样不光降低的表得数量,同时在做join操作的时候也会大大提高效率。
不过很多人知道怎么说,但是一到代码又发现有点模糊:
select P.FirstName, P.LastName, AA.City, AA.State
from Person P left join
(select distinct PersonId, City, State from Address) AA
on P.PersonId = AA.PersonId;
其实一看也挺简单的,记录一下就当是学习笔记了,不喜勿喷。