我已经创建了与Cloud SQL的连接,并使用EXTERNAL_QUERY()
将数据导出到Bigquery。我的问题是,由于不对Cloud SQL表进行分区,因此我不知道导出新的几天数据的有效计算方式;但是,它确实具有日期列date_field
,但其数据类型为char
。
我已经尝试通过调度类似类型的视图来运行以下查询,以便它插入结果:SELECT * FROM EXTERNAL_QUERY("connection", "SELECT period FROM table where date_field = cast(current_date() as char);")
,但运行时间很长,而:SELECT * FROM EXTERNAL_QUERY("connection", "SELECT period FROM table where date_field = '2020-03-20';")
几乎是即时的。
首先,强烈建议将“ date_field”列转换为数据类型DATE。这将在将来提高简单性和性能。
比较两个字符串时,MySQL将使用索引来加快查询速度。例如,当将字符串定义为“ 2020-03-20”时,此操作将成功执行。将当前日期转换为字符串时,比较中使用的字符集可能会有所不同,因此无法使用索引。
与“ date_field”列中的值进行比较,您可能需要检查一次转换为current_datetime的字符集。然后,您可以使用以下命令代替cast:CONVERT(current_date() USING enter_char_sets_here)
这里是不同转换功能的documentation。