大量のデータがない限り、大きな違いはありません。私はbigquery-public-data.github_repos.commits
テーブルに対していくつかのクエリを試して、0000120032a071dcd7e4bb1c8d418ca7a0028431
のような値を持つcommits
カラムにこれらの文字列変換を適用しました。
私が試したクエリは次の通りであった:
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ギガバイトと任意のクエリは、そのはるかに高速よりもされることなく、実行するために2〜3秒の間取ります残り。私は意図的にデータをフィルタリングして、結果が空になるようにしました。私は書き込み時間を含めたくないからです。
これはフィルタまたは選択リストで使用していますか? –
BQクエリを最適化するための私の経験では、配列や構造体を効率的に使うことを学ぶことが最善の方法です。ファンクション間の相違点として、BQは、最後に使用するものが本当に問題にならない程度の速さで十分です。 –