아래의 SQL 쿼리를 참조하십시오 - 우편 번호, 회사 이름 또는 도시 (위치)별로 상점을 검색 할 수 있습니다 ... 프론트 엔드 웹 사이트에는 검색이 하나만 있습니다 드롭 다운 검색 유형이없는 텍스트 상자.쿼리 성능 : 우편 번호, 회사 이름 또는 마을 검색
shop_options.live
이 1이고 어느 날 영업 시간에 따라 달라지는 경우에만 결과가 표시됩니다 : O_Hour.weekday = '5'
(금).
S_D.postcode
(예 : S_D.postcode = 'L14'
)으로 검색하면 shop_delivery_area
테이블에서 L14를 찾은 다음 해당 우편 번호에서 상점 목록을 표시합니다.
SELECT distinct S.*, S.company, S.street, S.town FROM shop as S
JOIN shop_delivery_area as S_D on S_D.shopID = S.shopID
JOIN shop_options on shop_options.shopID = S.shopID
JOIN shop_opening_hours as O_Hour on O_Hour.shopID = S.shopID
WHERE (S_D.postcode = 'Liverpool' OR S.company LIKE 'Liverpool' OR S.town LIKE 'Liverpool')
AND shop_options.live = '1' AND O_Hour.weekday = '5'
ORDER BY O_Hour.opentime
쿼리가 작동하지만 속도가 매우 느립니다. 결과를 얻기 위해 거의 일초. 어떻게 성능을 더 빨리 향상시킬 수 있습니까?
편집 : 고정 SQL 쿼리.
얼마나 많은 데이터가 있습니까? 색인? – michael667
shop (1,200), shop_delivery_area (5000), shop_options (1200), shop_opening_hours (8000) 행 ... 인덱스하지 않았습니다. –
EXPLAIN으로 이미 작업하셨습니까? http://dev.mysql.com/doc/refman/5.0/en/explain.html 모든 테이블에 이미 ID 열이 있으므로 색인이 도움이 될 수 있습니다. – michael667