SELECT
sql_no_cache
COUNT(p.id)
FROM shop_products p
LEFT OUTER JOIN shop_currency currency ON (p.currencyId=currency.id)
INNER JOIN shop_l2p l2p2 FORCE INDEX(show2) ON (p.id=l2p2.pid and l2p2.status>0)
INNER JOIN shop_labels l2 ON (l2p2.lid=l2.id and l2.type=2 and l2.status=1)
LEFT JOIN shop_l2p l2p3 ON (p.id=l2p3.pid and l2p3.status=1)
LEFT JOIN shop_labels l3 ON (l2p3.lid=l3.id and l3.type=3 and l3.status=1)
WHERE
CONCAT(p.label,l3.label,l2.label,p.stockCode) LIKE '%moda%'
AND p.status='1' A
ND p.stockAmount<>0
AND p.isOption=0
limit 1;
+-------------+
| COUNT(p.id) |
+-------------+
| 6669 |
+-------------+
1 row in set (3.91 sec)
다른 아이디어가 있습니까?계산 시간이 너무 깁니다.
하면 해당 테이블에 어떤 인덱스를해야합니까 너무 오래 시간을 변경 좋아하는? 쿼리의 실행 계획은 무엇입니까? – andri
인덱스가 생성 되었습니까? 검색 문자열에 앞의 인덱스에서'% '가 포함되면'% moda %'와 같이 작동하지 않을 것입니다. –
색인을 가지고있는 위치, 어쩌면 얼마나 많은 레코드를 가지고 있는지 더 자세히 설명해야합니다. –