조금 비싸다고 걱정됩니다.누구나보다 최적화 된 SQL 솔루션을 찾을 수 있습니까?
플러스 나는 조만간 태그에 대한 정규화 된 시스템을 구현할 예정이므로 추가 조인이있게 될 것입니다.
그 중 4 개의 테이블 (tbl_videos, tbl_articles, tbl_galleries 및 tbl_users) 중 각각 3 개의 결과를 표시하므로 '검색'을 한 번 눌러 쿼리를 네 번 실행해야합니다.
SELECT *,
(
(CASE WHEN `description` LIKE '%hotel%' THEN 1 ELSE 0 END) +
(CASE WHEN `description` LIKE '%london%' THEN 1 ELSE 0 END) +
(CASE WHEN `description` LIKE '%lazy%' THEN 1 ELSE 0 END) +
(CASE WHEN `description` LIKE '%dog%' THEN 1 ELSE 0 END) +
(CASE WHEN `title` LIKE '%hotel%' THEN 1 ELSE 0 END) +
(CASE WHEN `title` LIKE '%london%' THEN 1 ELSE 0 END) +
(CASE WHEN `title` LIKE '%lazy%' THEN 1 ELSE 0 END) +
(CASE WHEN `title` LIKE '%dog%' THEN 1 ELSE 0 END) +
(CASE WHEN `tags` LIKE '%hotel%' THEN 1 ELSE 0 END) +
(CASE WHEN `tags` LIKE '%london%' THEN 1 ELSE 0 END) +
(CASE WHEN `tags` LIKE '%lazy%' THEN 1 ELSE 0 END) +
(CASE WHEN `tags` LIKE '%dog%' THEN 1 ELSE 0 END)
) AS relevance
FROM `table`
WHERE `description` LIKE '%hotel%'
OR `description` LIKE '%london%'
OR `description` LIKE '%lazy%'
OR `description` LIKE '%dog%'
OR `title` LIKE '%hotel%'
OR `title` LIKE '%london%'
OR `title` LIKE '%lazy%'
OR `title` LIKE '%dog%'
OR `tags` LIKE '%hotel%'
OR `tags` LIKE '%london%'
OR `tags` LIKE '%lazy%'
OR `tags` LIKE '%dog%'
ORDER BY relevance DESC
LIMIT 0 , 3;
당신이 해결하려고하는 문제는 무엇인가 ... 갈이 및 쿼리 옵티마이 그것을 좋아하는 방법을 참조, 그냥 주어진 검색어에 대한 데이터베이스를 검색하는 것입니다? 프로세스는 무엇입니까? 사용자가 검색 상자에 데이터를 입력 한 다음 어떻게됩니까? –
그냥 표준 검색, 예. 그런 다음 페이스 북처럼 각 카테고리의 x 번호 목록이 표시됩니다. 내 경우 3 명의 사용자, 3 개의 기사, 3 개의 비디오 및 3 개의 갤러리가 결과로 표시됩니다. – Mark
예를 들어 사용자가 "hotel london lazy dog"를 검색 했습니까? –