2010-05-13 7 views
2

나는 사용자가 텍스트 필드에서 좋아하는 것을 넣을 수있는 웹 사이트의 검색 기능을 만들고 있습니다.mysql을 사용한 고급 검색

처음에는 검색 할 필요가있는 모든 테이블에 INNER JOIN을 사용하여 쿼리를 작성했습니다 (이름, 직위, 직업, 자동차 브랜드, 이름 ...).

SELECT column1, column2, ... FROM person INNER JOIN person_car ON ... INNER JOIN car ... 

이 6 또는 8이 내부 조인과 쿼리에서 결국, 그리고 ... LIKE '%의 searchvalue %의'

지금이 쿼리 보인다 훨씬 MySQL의에서 time'out의 원인 그리고 호스팅 제공 업체로부터 쿼리가 너무 많은 리소스를 차지한다는 경고를 받았습니다.

이제 분명히이 작업을 매우 잘못하고 있지만 이러한 종류의 검색 기능에 대한 올바른 접근 방식이 궁금합니다.

답변

1

여러 쿼리 또는 UNION 다중 쿼리를 사용하여 단일 결과 집합으로 이동합니다.

또한 특히 FULLTEXT 인덱스를 사용하면 LIKE '% string'과 같이 특히 '선행'% '가 매우 느리기 때문에 (인덱스를 사용하지 않고 모든 행을 검사해야 함) 쿼리의 속도를 높일 수 있습니다.

+0

감사합니다. 분명한 답변입니다. – Nathan

0

Lucene 또는 Sphynx 검색 엔진을 구현하는 것이 좋으며 SQL 쿼리보다 훨씬 빠르고 확장 성이 좋습니다.