0

アイテムリストから検索条件に合うアイテムを 50 個選択する必要があります。また、販売中の現在の数量も必要です。アイテム リストには 100,000 を超えるレコードがあります

これは私が今していることです:

SELECT 
  items.id,
  CONCAT(prod_codes.code,items.item) AS item,
  items.price,
  sold.count
FROM items
LEFT JOIN prod_codes ON items.prod_code_id=prod_codes.id
LEFT JOIN (
    SELECT COUNT(*) AS count,CONCAT(prod_code,part_num) AS part 
    FROM `sold_items` 
    WHERE 1 
    GROUP BY CONCAT(prod_code,part_num)
    ORDER BY count DESC
) AS sold ON sold.part=CONCAT(prod_codes.code,items.item)
WHERE active_status=1
AND CONCAT(items.prod_code,items.item) collate utf8_general_ci LIKE '%".$search_part."%' 
AND items.description collate utf8_general_ci LIKE '%".$search_desc."%'

ORDER BY items.item

LIMIT 50

ただし、このクエリの実行には 20 秒以上かかります。もっと良い方法があると確信しています。

4

2 に答える 2