ホーム‎ > ‎Magic xpa‎ > ‎Magic xpa 新連載概要‎ > ‎

第170回 Magic SQL の驚異的な検索能力

2022/05/05 2:05 に Masanobu Tanda が投稿   [ 2022/05/05 2:05 に更新しました ]
2022年4月30日

 今回は、Magic の検索スピードに関する話題です。本連載の第38回(2011年4月)~第40回(2011年6月)で、「SQL Where 句の書き方」と題して Magic SQL に関して少し触れましたが、当時はまだ SQL が今ほど普及しておらず、SQL を使用するメリットについても知る機会が少なかったのですが、あれから11年の歳月が流れ、今や SQL なしの業務アプリは考えられない程まで業界が成長してきました。

 とはいえ、Magic 開発者にとっては SQL コマンドを駆使してプログラムを書くにはまだまだハードルが高いという感があります。そこで今回は、プログラム内に SQL コマンドを全く記述することなく、SQL が持つ検索能力をフルに味わえるようなプログラムの作り方を皆さんとご一緒に学んでまいりたいと思います。SQL コマンドの知識は一切、必要ありません。

 画面1は日本郵便株式会社が公開している全国郵便番号帳データをもとに、SQL 以前の作法で作成した Magic の検索プログラムです。12万3千件の住所レコードの中から、3つの文字列を含むものを検索して抽出するというプログラムです。文字列が部分一致するものを探し出すという検索ですので、先頭一致を目的としたインデックスは使用することができません。つまり、12万3千件のレコードをインデックス無しで全件検索して、該当データを探し出すという動きになります(後略)。

(以降、本編に続きます。本編ご購読のお申込みはこちらです)

第170回(2022年4月30日号)目次

1 12万3千件のレコードで検索テスト
2 3つの複合検索文字列を指定
3 検索結果の表示までに9秒掛かった
4 11年前のスペックでは52秒掛かった
5 Magic SQL を使用した場合の検証
6 検索結果の表示までにわずか1秒
7 いったいどこが違うのか
8 使用している関数はまったく同じ
9 その答えは Magic のヘルプに
10 SQL ゲートウェイの判別は自動
11 Magic のロギングでこれを確認
12 12万3千件のフェッチと8件のフェッチ