PostgreSQL
데이터베이스를 사용하고 있습니다.Lucene 또는 SQL의 성능 향상
은 구조라는 테이블 metadatavalue있는 것은 다음과 같습니다 :
아무것도 제출 또는 가 생성됩니다 거의 25 메타 데이터 필드에 항목을 추가됩니다metadatavalue_id integer Primary Key Auto Increment
metadta_field_id integer Foreign Key
text_Value varchar
text_lang varchar
place integer
.
metadatavalue 테이블이 이미
주위한 백 쉰 천 (150000) 레코드가 포함되어 있습니다.
필드에 자동 완성 기능을 구현하여 테이블에 metadata_field_id로 저장되는 "작성자" 이라고 말합니다.
PgSQL 프롬프트에서 테이블을 쿼리 할 때 결과를 반환하는 데 거의 1 ~ 2 초가 걸립니다.
QUERY :로
SELECT metadatavalue.text_value AS author, count(metadatavalue.text_value) AS count
FROM metadatavalue
WHERE (metadatavalue.metadata_field_id IN (SELECT metadatafieldregistry.metadata_field_id
FROM metadatafieldregistry
WHERE metadatavalue.text_value LIKE 'Pra%' AND metadatafieldregistry.metadata_schema_id = 1 AND metadatafieldregistry.element::text = 'contributor'::text))
GROUP BY metadatavalue.text_value;
의 자동차에 대해 사용자가 값을 입력 할 때 4 ~ 5 번 실행 수있는 쿼리를 완료합니다.
그래서 LUCENE 기반 검색을 구현하려고합니다.
처음에는 백엔드에서 색인을 작성한 다음 각각의 새 항목 작성에서 새 항목 색인을 작성하는 스레드를 작성합니다.
Apache Lucene이 더 나은 선택인지 또는 SQL이 최적화 될 수 있는지 알고 싶습니다.
EDIT : 메타 데이터 필드를 포함하는 다른 테이블이 있으며 값에 대한 메타 테이블 테이블에서 외부 키 (metadatafieldregistry.metadata_field_id)로 사용됩니다.
표를 제대로 색인화하지 않으십니까? 그런 급진적 인 조치처럼 보입니다. – usr