1200万件のデータAと1000件のデータBの突き合わせ検索を行おうと考えています。
データの性質上、AのデータがBに含まれているか、という検索を行いたいのですが、単純にAのデータで一件ずつBのデータを検索しようと考えており、そうなると、1200万回のSELECT文を発行することになっていしまいます。
1200万回のデータベースへのアクセスとなると、とてつもない時間がかかりそうなので、なんとか効率よく行いたいと考えているのですが、皆さんだったらどのような方法を考えますか?
私が今考えているのは、1200万件のデータを100個くらいのテーブルに分けて、それぞれで別スレッドを立てて行えれば、単純に100分の1くらいの時間になるのではないかなあ、と考えているのですが・・・
宜しくお願いしますm(_ _)m
No.4ベストアンサー
- 回答日時:
#2です。
パフォーマンスは悪いだろうけど
select Table1.Key, Table1.Data, Table2.Key, Table2.Data
from Table1 inner joib Table2
on Table2.Key like '%' & Table1.Key & '%'
では?
回答、有難うございます。
やはり、結合キーとして、LIKE検索が使えるのですね(゜▽゜)
感覚として、内部結合の方がSELECT文を繰り返す方が速そうな気がしますので、参考にさせて頂きます。
No.6
- 回答日時:
Bが1000件程度なのであれば、Bは最初に全件SELECTしてメモリに保持しておき、Aはサーバカーソルで回して、Aのデータ1件毎にBを C# の IndexOf でチェック、というのはどうでしょう。
という処理を CLR ストアド化するとモアベター、かな?
おっしゃるように必要に応じてマルチスレッド化してみても良いかもしれませんね。
いずれにせよ、ある程度試行錯誤は必要でしょう。頑張ってみてください。
回答有難うございます。
仰る通り、何度か試行錯誤をしてみて、一番ベターな方法を試してみようと思っており、その試行錯誤の材料が欲しく、今回質問しました。
メモリに保持&サーバカーソルというのは発想になかったので、参考にさせて頂きたいと思います。
No.5
- 回答日時:
内部結合させればいいだけでは?
完全一致ではなく、LIKE検索になるので、JOINはなかなか難しいのかな、もしくはかえって時間がかかってしまうのかな、と思っています。
No.3
- 回答日時:
本質的に時間のかかる処理なので、しょうがないかと。
SQLServerはよく知りませんが、Bのデータがキャッシュに載るような工夫をすれば、Aのデータベースを全件読む程度の時間でいけるかと。Bテーブルにたくさんカラムがあってテーブルサイズが大きい場合は、該当カラムとユニークキーだけの小さいテーブルを作る。No.2
- 回答日時:
土俵は何?
DBなら内部結合するSQL文書けばOK。
select Table1.Key, Table1.Data
from Table1 inner joib Table2
on Table1.Key = Table2.Key
みたいな。
一回投げれば一致行の表が返ります。
キーの一致ではなく、あいまい検索なのです。
SELECT *
FROM B
WHERE B.hogehoge LIKE '%A.hoge%'
のイメージです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 更新前と更新後の差分をVBAを使って抜き出したい 5 2023/06/01 14:35
- その他(ブラウザ) Android Google でなく Bing検索すれば 何検索したかわからずデータ収集されない? 2 2023/03/10 05:25
- JavaScript javaScriptで画面に値を入れるには 1 2022/08/14 12:27
- その他(開発・運用・管理) MacのPCでわファイルを検索したくて、右上の虫眼鏡で検索をかけますが、EPSデータが何故か検索デー 2 2022/10/25 10:29
- Access(アクセス) Accessで作ったデータベースをwebで活用したい 2 2023/06/03 08:49
- HTML・CSS WEBサイトの構築。表示データとWEBデザインを分離する考え方を専門用語・業界用語では何と言うか? 8 2022/09/27 09:16
- WordPress(ワードプレス) WordPress のブログを初期化したい。リスクは? 1 2023/01/01 05:47
- Excel(エクセル) EXCELで参照したデータを検索したい。 2 2023/01/18 13:32
- Excel(エクセル) マクロVBAのフォルダ階層別で検索の方法 4 2022/04/03 23:23
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】看板の文字を埋めてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・【穴埋めお題】恐竜の新説
- ・我がまちの「給食」自慢を聞かせてっ!
- ・冬の健康法を教えて!
- ・一番好きな「クリスマスソング」は?
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
従業員が1名だけのSierっている...
-
画像生成AIのプロンプトの作り...
-
IT業で開発をされてる方々に質...
-
アルゴリズムとコードとは何で...
-
HTMLソースが表示のページのも...
-
Rでのデータフレーム作成について
-
AIのプログラムについて教えて...
-
vba クリップボードクリアにつ...
-
google Colabでmatplotlibの描...
-
REGZAに接続できない(パソコン)
-
Lazarus(IDE2.2.6)をインスト...
-
pythonについて
-
共テのプログラミング言語はPyt...
-
itエンジニアに就職希望で未経...
-
添付URLの様な3Dが動くWEBサイ...
-
添付URLの様なサイトを作るには...
-
アセンブラーの命令についてです。
-
Pythonのエラーメッセージをコ...
-
ホームページのプログラムの見...
-
Webサイト内に埋め込んだmp4動...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAのユーザーフォームで...
-
csvデータ不要列の削除をbatフ...
-
追加クエリで重複データなしで...
-
【VB】セルが空になるまで処理...
-
エクセル 2つの列にある値の完...
-
pandasでsqlite3にテーブル作成...
-
ListBoxにAddItemする際、重複...
-
JDBCを使ってdate型へのINSERT...
-
EXCELで外部データの取り込みが...
-
ACCESS VBAでSeekメソッドの処...
-
【ExcelVBA】範囲選択の方法に...
-
マクロでファイルを読み込み、...
-
エクセルで去年のデータを今年...
-
VBAでの行数を揃える方法
-
自作アプリからAPIで他のアプリ...
-
SQL-Serverで時間切れが発生
-
PHPとMYSQL、DBのデータが空の...
-
1200万件のデータで検索
-
機械語
-
重複データをなくす
おすすめ情報