如何减少列SQL必须通过连接2个表看?

  • 本文关键字:2个 连接 何减少 SQL sql
  • 更新时间 :
  • 英文 :


我使用内部连接将两个表连接在一起,但是考虑到这些表有数十亿行长,我希望加快查询速度并找到一种减少sql必须梳理的列的方法。是否有一种方法,在连接中,只有sql搜索通过某些列?我明白你可以通过SELECT来做到这一点,但我希望不是从连接中选择列,而是可以减少从。

中搜索的列的数量。交货)

SELECT *
FROM table1 t1
JOIN table2 t2
ON t1.suite = t2.suite
AND t1.region = t2.region

目前table1和table2都有超过20列,但我只需要从每个表的3列。顺便说一下,我用的是presto。谢谢,注意安全:)

如果您在同一个索引中为suiteregion分别创建索引,并为您需要的任何其他结果列添加INCLUDES子句,则SQL Server可以仅使用索引完成查询。这被称为覆盖索引的,它将通过增加"行"的数量来提高查询的性能。(索引条目)适合一个8Kb的页面,而不是一个完整的实际行,因此也减少了完成查询的页面读取总数。

请注意,在INSERT/UPDATE/DELETE时,您需要额外的工作来保持索引是最新的,索引需要额外的存储,如果索引的任何部分最终出现在缓存缓冲区中,则需要额外的缓存RAM。对于潜在的数十亿个索引条目,该成本可能非常大,并且可能超过此查询的收益,或者可能需要更新服务器容量规划。

SELECT T1.COL_1,T1.COL_2,T1.COL_3,T2.COL_1,T2.COL_2,T2.COL_3
FROM TABLE_1 T1
JOIN TABLE_2 T2 ON t1.suite = t2.suite AND t1.region = t2.region

在大多数关于sql语言的书籍中都有一个警告"不要在生产代码中使用* ">

最新更新