我在oracle列中使用CTX索引。
我有两张桌子
xyz have 6 million record.
abc has 100k record
我想要实现的是这个。
场景 - 我必须将它们联合起来,然后我需要按日期排序数据。然后我需要他们的分页记录。
select page_loc, blurb_id, article_id, hit_date,val_rank from (
SELECT REGEXP_REPLACE(regexp_replace(page_loc, '^.*mercer\.com'),'\?.*$') AS page_loc,
blurb_id, article_id, hit_date,RANK() OVER (ORDER BY hit_date DESC) AS val_rank
from (
SELECT page_loc, blurb_id, article_id, hit_date
FROM abc u INNER JOIN person p ON u.person_id=p.person_id
WHERE (CONTAINS(u.page_loc,v_pattern) > 0 )
UNION ALL
SELECT e page_loc, blurb_id, article_id, hit_date
FROM xyz u INNER JOIN person p ON u.person_id=p.person_id
WHERE ( CONTAINS(u.page_loc,v_pattern) > 0)
) p
left join
company c on c.company_id = p.company_id
) a
where val_rank between (v_page_no -1) * 10 and v_page_no * 10
v_pattern - >搜索文字 v_page_no - >页数
我需要很长时间才能记录一些v_pattern,例如100k,
例如一个单词有200万条记录。这需要20多分钟。
知道我该怎么做。或者用oracle是不可能的。
注意: - 当我分析它时,我发现顺序和分页使它变慢。我该如何克服