Sql REGEXP\u REPLACE与RTRIM的BigQuery标准性能

Sql REGEXP\u REPLACE与RTRIM的BigQuery标准性能,sql,google-bigquery,Sql,Google Bigquery,我想知道与BigQuery标准SQL中的一些和相关的性能。 以下哪两项性能更好: DISTINCT RTRIM(“12367e”、“abcdefghijklmnopqrstuvxyz”) 对 REGEXP\u REPLACE(“12367e”,r“\D$”,”) 我不确定这两种方法之间是否有很大的性能变化 除非你有大量的数据,否则看起来差别不大。我在表上尝试了一些查询,将这些字符串转换应用于commits列,该列的值类似于0000110032A071DCD7E4BB1C8D418CA7A0028

我想知道与BigQuery标准SQL中的一些和相关的性能。 以下哪两项性能更好:

DISTINCT RTRIM(“12367e”、“abcdefghijklmnopqrstuvxyz”)
REGEXP\u REPLACE(“12367e”,r“\D$”,”)


我不确定这两种方法之间是否有很大的性能变化

除非你有大量的数据,否则看起来差别不大。我在表上尝试了一些查询,将这些字符串转换应用于
commits
列,该列的值类似于
0000110032A071DCD7E4BB1C8D418CA7A0028431

我尝试的问题是:

SELECT COUNTIF(RTRIM(commit,'abcdefghijklmnopqrstuvwxyz') = '')
FROM `bigquery-public-data`.github_repos.commits;

SELECT COUNTIF(REGEXP_REPLACE(commit, r'\D$', '') = '')
FROM `bigquery-public-data`.github_repos.commits;

SELECT COUNT(*)
FROM `bigquery-public-data`.github_repos.commits
WHERE RTRIM(commit,'abcdefghijklmnopqrstuvwxyz') = '';

SELECT COUNT(*)
FROM `bigquery-public-data`.github_repos.commits
WHERE REGEXP_REPLACE(commit, r'\D$', '') = '';

这些都处理7.91 GB的数据(仅从字符串列开始),运行时间为2到3秒,没有任何查询比其他查询快那么多。我故意过滤数据,使结果为空,因为我不想包括写入时间。

除非您有大量数据,否则看起来没有多大区别。我在表上尝试了一些查询,将这些字符串转换应用于
commits
列,该列的值类似于
0000110032A071DCD7E4BB1C8D418CA7A0028431

我尝试的问题是:

SELECT COUNTIF(RTRIM(commit,'abcdefghijklmnopqrstuvwxyz') = '')
FROM `bigquery-public-data`.github_repos.commits;

SELECT COUNTIF(REGEXP_REPLACE(commit, r'\D$', '') = '')
FROM `bigquery-public-data`.github_repos.commits;

SELECT COUNT(*)
FROM `bigquery-public-data`.github_repos.commits
WHERE RTRIM(commit,'abcdefghijklmnopqrstuvwxyz') = '';

SELECT COUNT(*)
FROM `bigquery-public-data`.github_repos.commits
WHERE REGEXP_REPLACE(commit, r'\D$', '') = '';

这些都处理7.91 GB的数据(仅从字符串列开始),运行时间为2到3秒,没有任何查询比其他查询快那么多。我故意过滤数据,使结果为空,因为我不想包括写入时间。

您是在过滤器中使用此选项,还是在选择列表中使用此选项?根据我的经验,为了优化BQ查询,您最好的选择是学习高效地使用数组和结构。就函数之间的差异而言,BQ足够快,最终使用哪种函数并不重要。您是在过滤器中使用它,还是在选择列表中使用它?根据我的经验,为了优化BQ查询,您最好的选择是学习有效地使用数组和结构。就功能之间的差异而言,BQ足够快,最终使用哪种功能并不重要。如果这回答了您的问题,请接受/支持我的回答。另见。谢谢如果这回答了你的问题,请接受我的回答。另见。谢谢