340
178

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

1時間かかった作業が0.22秒で終わってしまった話

Last updated at Posted at 2021-06-06

#Day1

「ある日のテストで作成したデータAと別の日に作成したデータBに差異がないことを比較してほしい」と僕にタスクが割り振られた。
こんな手順でエビデンスを作った。

1.データAとデータBを抽出するSELECT文をそれぞれ実行。
2.1の結果をcsvファイルにそれぞれエクスポート。
3.2のcsvファイル2つをシートを分けてExcelに貼り付け。
4.3の各シートで、抽出結果の文字列結合を各行で行う。
5.4で文字列結合した結果が、データAのシートとデータBのシートに互いに存在するかExcel関数で確認。

データAとデータBはそれぞれ2万件程度あり、エクスポートと貼り付け作業にそれなりに時間がかかった。文字列結合や存在チェックのためのExcel関数は8万セルに及び、Excelは山のように大きく重たくなった。
この作業は気合と根性で1時間程度で終わらせた。

Day2

別の日に同じタスクが割り当てられた。
違うのはデータAとデータBが100万件程度に膨らんでいたことであった。
「今までのやり方が通用しないのでは??」と気づいたのは、データAのエクスポートを開始して20分が経過した時であった。

この作業は定時までに終わらせなければいけない。定時まで1時間を切っている。
藁にもすがる思いで、「データ 存在チェック SQL」とGoogleの検索窓に入力し、ボタンを押下する。
エクスポートするのに20分経っても終わらないデータ量だ。SQLを実行したとて結果は返ってこないだろう。一番最初に検索に引っかかったSQLをエディタに入力し、半ば諦めながら実行ボタンを押下した。

SELECT 項目A以外 FROM テーブルX WHERE 項目A = ‘データA’
minus
SELECT 項目A以外 FROM テーブルX WHERE 項目A = ‘データB’

#後日談というか、今回のオチ。
ーー0.22秒であった。
「さあ上司にタスク遅延の報告をしなければならないぞ。その前にトイレでも行っとくか」と思う間も無く結果が返ってきた。

「SIerのエンジニアはExcelのプロ」と揶揄われている記事を「そうだそうだ」と他人事のように読んでいた僕であったが、この時ばかりは頭にブーメランが刺さった音がした。

論理差。取得結果Aと取得結果Bを比較し、その差異を算出する演算であった。
そういえば一昨日読み始めたデータベーススペシャリストの教本に書いてあった。
「こんなの知ってるし。余裕で合格だな。」と流し読みした記憶がある。

山のように重くなったExcelと、0.22秒で返ったSQLの結果を見て僕はこう呟いた。
「さい、なし。」

340
178
8

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
340
178

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?