如果您曾经编写过一个运行时间很长的SQL查询,这篇文章是为您准备的
数据科学家喜欢SQL,但我们在编写高性能查询方面确实不擅长(也许是因为我们花太多时间争论“S-Q-L”或“sequel”该怎么发音?)。
在本文中,我将向您展示如何使用SQL分区来优化查询并编写更快、更经济的代码。如果您已经掌握了SQL的基础知识,并希望开始发掘更高级的数据科学技能,这将是您工具包的重要补充。
什么是分区表?
分区表是将表分成多个段/分区的表(谁能预料到呢?)。
在分区表中,每个段都存储在服务器的不同位置。这与普通(未分区)的SQL表不同,普通表的整个表位于一个位置。
下面是使用关于我最喜欢的三本书每日销售情况的虚拟数据进行比较:
无论是未分区表还是分区表都保存着相同的数据;唯一的区别在于分区表将数据分成了多个段。它仍然是一张单独的表(即不是三个独立的表),只是以不同的方式存储数据。
为什么我们要关心这个?嗯,正如我们马上会看到的,我们可以利用这种结构编写更高效的SQL查询。
创建分区表
创建分区表非常简单。
例如,如果我们使用以下代码创建一个普通(未分区)表…
CREATE TABLE `myproject.mydataset.unpartitioned` ( date DATE, book_name STRING, total_sales INT64);INSERT INTO `myproject.mydataset.unpartitioned`VALUES ('2023-12-01', 'Shoe Dog', 154), ('2023-12-01', 'Born to Run', 90), ('2023-12-02', 'Running with the…