2013-03-19 2 views

답변

0

일반적으로 말하면 데이터베이스에서 반환되지 않습니다. 많은 필드 옵션을 가지고 있고 좋은 측정을 위해 던져진 부울 논리가 Lucene, Sphinx 또는 Xapian과 같이 검색 서버에서 반환되는 고급 검색을 사용할 수도 있습니다.

데이터베이스에서 반환하는 것은 효율적으로 수행하기가 거의 불가능합니다.

SELECT ... WHERE 1=1 

그런 다음, 서로 필드 위에 루프가 시작시 whildchar %를 추가 Idealy

AND field LIKE '%abc' 
AND field_2 LIKE '%def%' 
AND field LIKE 'GHI%' 

를 추가하거나 가능 (성능상의 이유로 경우 종료 : 일반적으로 동적으로 쿼리를 작성하면됩니다) 또는 둘 다 필드 데이터 내의 검색에 사용됩니다.

이 쿼리를 작성하고 실행하면 인덱싱 속도가 느려지고 성능 병목 현상의 주범이 될 수 있습니다.

+0

통찰력을 주셔서 감사합니다, 스티브. 소셜 네트워킹 사이트에서 사용자 프로필을 고급 검색하는 경우 검색 서버를 계속 사용 하시겠습니까? – ProgrammerGirl

+0

@Programmer 그것은 문제의 데이터 셋과 검색하려는 필드에 따라 달라집니다. 때로는 CountryId, StateId, TownId 등을 저장하고 인근 사람들을 필터링하는 것과 같이 문자열을 조작하여 동일한 데이터를 생성해야 할 때 훨씬 효율적입니다. 검색 서버는 복잡한 검색을위한 디자인이며 일반적으로 RDBMS 내에있는 것보다 매우 빠르고 확장 성이 뛰어납니다. – Steve