スライドする 3 秒のウィンドウ内で、Oracle 11.2 テーブル内の同様のレコードを識別する方法を探しています。テーブルには、24 時間以内に挿入された約 500K 行があります。
要件:
- これらのレコードは、UTL_MATCH.JARO_WINKLER_SIMILARITY を使用して、少なくとも 88% の類似性スコアを満たす必要があります。
- 3 秒以内に少なくとも 1 つの同様のレコードが存在する場合、特定のレコードの FLAG 列を更新する必要があります。
テーブル定義:
CREATE TABLE ADDR_TAB
( DT DATE NOT NULL,
ADDR VARCHAR2(200) NOT NULL,
FLAG INT
);
CREATE INDEX ADDR_DATE_IDX ON ADDR_TAB(DT);
サンプルデータ:
insert into addr_tab values (to_date('03-OCT-13 04.36.57 PM','DD-MON-RR HH.MI.SS AM'),'test',null);
insert into addr_tab values (to_date('03-OCT-13 04.36.57 PM','DD-MON-RR HH.MI.SS AM'),'test123',null);
insert into addr_tab values (to_date('03-OCT-13 04.36.58 PM','DD-MON-RR HH.MI.SS AM'),'2test2',null);
insert into addr_tab values (to_date('03-OCT-13 04.36.58 PM','DD-MON-RR HH.MI.SS AM'),'12test',null);
insert into addr_tab values (to_date('03-OCT-13 04.37.00 PM','DD-MON-RR HH.MI.SS AM'),'12test',null);
insert into addr_tab values (to_date('03-OCT-13 04.37.02 PM','DD-MON-RR HH.MI.SS AM'),'12test',null);
insert into addr_tab values (to_date('03-OCT-13 04.37.03 PM','DD-MON-RR HH.MI.SS AM'),'1test87',null);
insert into addr_tab values (to_date('03-OCT-13 04.37.03 PM','DD-MON-RR HH.MI.SS AM'),'12test',null);
insert into addr_tab values (to_date('03-OCT-13 04.37.03 PM','DD-MON-RR HH.MI.SS AM'),'12test56',null);
insert into addr_tab values (to_date('03-OCT-13 04.37.04 PM','DD-MON-RR HH.MI.SS AM'),'12test88',null);
insert into addr_tab values (to_date('03-OCT-13 04.37.05 PM','DD-MON-RR HH.MI.SS AM'),'12test56',null);
SQLFiddle: http://sqlfiddle.com/#!4/1b53f/1