文字列内の数値を検索に使う場合の手法
検索の仕方で質問があります。
WinXPでの開発です。
データベースはOracle、開発ソフトはC++Builder5です。
以下のようなテーブルとデータがあります。
TB2,TB3のidは必ずTB1に存在します。
TB3のdataには、カンマ区切りの文字列が入っています。
dataのカンマ区切りの内容は
"コード,サイズ1,サイズ2"
となっています。
実際はこのような単純なデータではないので、カラム分けするのは
設計時に難しかったようです。
------------------------------
CREATE TABLE TB1
(
id number,
name varchar2(20)
);
1 sample1
2 sample2
3 sample3
------------------------------
CREATE TABLE TB2
(
id number,
keyno number
);
1 100
3 200
------------------------------
CREATE TABLE TB3
(
id number,
data char(200)
);
1 aaa,0.1,0.2
2 bbb,0.3,0.4
------------------------------
たとえば
TB2.keynoが100であり、TB3.dataのサイズ1が0.1のデータのTB1.nameを取りだす
という場合、どのようなSQL文になるのでしょうか?
TB3のデータは読み込んだ後に一旦文字列を分解して
コード、サイズ1、サイズ2を取得しないことには検索出来ないと思います。
一番高速な手法はどうなるでしょうか?
トリガーを使って、作業用のテーブル作ってやればいい、
みたいなことを言われたのですが、トリガーは違うのでは?と思いながら
手法を悩んでいます。
ローカルデータベースのようなファイルを使ってやる方法になるのでしょうか?
アドバイスをお願いします。
補足
早速の回答ありがとうございます。 256GB搭載サーバで max_heap_table_size=128G という感じに 余裕を持って設定すれば、128GB のデータも収容可能ということで 良いでしょうか?