加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

SQL – 使用连接过滤大型表 – 最佳实践

发布时间:2021-04-01 03:53:38 所属栏目:编程 来源:网络整理
导读:我有一个包括大量数据的表,我必要将它与其他一些大表毗连起来. 我的桌子中只有一小部门每次都与我有关. 什么时辰最好过滤我的数据? 在SQL的where子句中. 行使特定命据建设姑且表,然后才插手它. 将谓词添加到第一个内毗连ON子句. 其他一些设法. 1. Select * F

我有一个包括大量数据的表,我必要将它与其他一些大表毗连起来.

我的桌子中只有一小部门每次都与我有关.

什么时辰最好过滤我的数据?

>在SQL的where子句中.
>行使特定命据建设姑且表,然后才插手它.
>将谓词添加到第一个内毗连ON子句.
>其他一些设法.

1.

Select * 
From RealyBigTable
Inner Join AnotherBigTable On …
Inner Join YetAnotherBigTable On …
Where RealyBigTable.Type = ?

2.

Select * 
Into #temp
From RealyBigTable
Where RealyBigTable.Type = ?

Select * 
From #temp
Inner Join AnotherBigTable On …
Inner Join YetAnotherBigTable On …

3.

Select * 
From RealyBigTable
Inner Join AnotherBigTable On RealyBigTable.type = ? And … 
Inner Join YetAnotherBigTable On …

另一个题目:
先产生什么事?插手照旧在那边?

办理要领

由于您正在行使INNER JOIN,以是WHERE或JOIN辩说仅取决于您的咀嚼友善势威风凛凛.就小我私人而言,我喜畛刳ON子句中保存两个表之间的链接(譬喻外键束缚),并在WHERE子句中保存对数据的现实过滤器.

SQL Server将查询理会为沟通的标志树,因此将构建沟通的查询执行打算.

假如你行使[LEFT / RIGHT] OUTER JOINS取代它,它会发生一个与众差异的天下,由于不只机能也许差异,并且很也许是功效.

答复你的其他题目:

什么时辰最好过滤我的数据?

>在SQL的where子句中.
>行使特定命据建设姑且表,然后才插手它.
>将谓词添加到第一个内毗连ON子句.
>其他一些设法.

在WHERE或ON子句中,两者都被视为沟通.对付3,“第一内部联接”没有相干性.在多表INNER JOIN场景中,起首(在查询中)起首无关紧急,由于查询优化器将按其以为吻合的方法对次序举办洗牌.

行使姑且表是完全没须要的,也无济于事,由于你无论怎样都必需提取相干部门 – 这也是JOIN的浸染.另外,假如您在JOIN前提/ WHERE过滤器上有一个很好的索引,索引将仅用于会见相干数据而不查察别的表.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读