0
LIKE와 일치하는 가장 저렴한 가격의 행을 가져 오는 데 아래 쿼리를 사용하고 있습니다. SQL : LIKE 및 min()과 결합
Suppliers
id | name
----------------------------------------
1 | sup1
2 | sup2
Prices
id | article_number | price | supplier_id
------------------------------------------------
1 | 12345678 | 312 | 1
2 | 12345678 | 219 | 2
3 | 87654321 | 312 | 1
select prices.* from prices
inner join
(
select min(price) as price,
article_number as article_number from prices group by article_number
)
min_prices on prices.price = min_prices.price
and prices.article_number = min_prices.article_number
WHERE prices.article_number LIKE '".$q."%'
이제 공급자 테이블에서 suppliers.name를 가져하려는 있지만
은 :select prices.*, suppliers.name from prices, suppliers
inner join
(
select min(price) as price,
prices.article_number as article_number from prices group by prices.article_number
)
min_prices on price = min_prices.price
and article_number = min_prices.article_number
WHERE
prices.article_number LIKE '".$q."%' AND
prices.supplier_id = suppliers.id"
이은 행의 18 배 금액은이를 것으로 예상되는 반환
...?또한 표는 10 억 개 이상의 행으로 구성되어 있으므로 효율성이 매우 중요합니다.
모든 관련 테이블에 대해 'show create table tablexyz'출력을위한 촬영. 어떤 합성 인덱스를 알고 있는지, 심지어 커버 된 인덱스를 얻으려고 노력하십시오. 그리고 물론, '설명'에서 출력. '(price, article_number)'의 합성은'article_number'의 너비에 따라 달라질 수 있습니다. – Drew