0
いくつかのワイルドカード名のフェッチ操作を行うシナリオがあります。ワイルドカード名は75kを超えることができます。Teradataで揮発性テーブルを使用したIN節または内部結合のパフォーマンス
ケース1: 私は句で試みなどが、それは春のJDBCを使用してIN句で2500人の以上のparametered名を許可していませんしています。だから、私はすべてのリクエストと並行非同期要求は2500ワイルドカードを使った名前
SELECT NAME FROM DB.TABLE_A
WHERE NAME LIKE ANY (:wildcarded_names)
Map<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("wildcarded_names", wildcarded_names);
SqlRowSet rowSet = getNamedParameterJdbcTemplate().queryForRowSet(query, paramMap);
Set<String> names = new HashSet<String>();
while (rowSet.next()) {
names.add(rowSet.getString("NAME"));
}
ケース2を含む使用: Teradataの中の揮発性の表を作成し、すべてのワイルドカードを使った名前を挿入し、LIKE句でinnerjoin使用を
SELECT NAME
FROM DB.TABLE tbl
INNER JOIN volatile_table vtbl ON vtbl.NAME LIKE tbl.NAME
どちらが効率的で、パフォーマンスが向上しますか?
対策...データの量によっても異なる場合があります。また、 'in'節が別々の値にどれくらい入れることができるかは、使用中のデータベースに依存することさえあります。 –
カラムが1つしかない場合は、 'queryForList'メソッドを使いたいかもしれません。それは 'SqlRowSet'のオーバーヘッドを節約します。 –
NAME列のみを選択したいですか? 〜75k wildcarded_namesを渡すと、あなたのデータベースにはいくつのレコードがありますか? – sura2k