0
私はアプリで全文検索するためにSphinxを使用しています。私はview
を使用してproducts
テーブルからデータをフィルタリングし、Sphinxはこのビューにインデックスを付けます。今は、関連するタグがある商品テーブルの下にハードコードフィールドがありますが、タグが変更される可能性があり、毎回ハードコードフィールドを操作する必要があります。タグとGROUP_CONCATのある商品の表示
だから私は、私はGROUP_CONCATでビューを作成することができると考え、このような構文を私のためにすべての関連タグを一覧表示した
SELECT p.id AS id, GROUP_CONCAT(t.tag SEPARATOR '|') AS tags,
UNIX_TIMESTAMP(p.created) AS created
FROM products p
INNER JOIN products_tags pt ON pt.product_id = p.id
INNER JOIN tags t ON t.id = pt.tag_id
AND p.deleted = 0
AND (p.images IS NOT NULL OR p.images <> '')
AND p.status LIKE 'listed'
GROUP BY p.id;
このクエリでの問題は、それが実行に年齢を取ることです。それは本当に遅いです。 1つのレコードのみを取得するには、最大5秒かかります。これはEXPLAIN
出力されます。
1, SIMPLE, pt, ALL, , , , , 165029, Using temporary; Using filesort
1, SIMPLE, p, eq_ref, PRIMARY, PRIMARY, 4, trych_default.pt.product_id, 1, Using where
1, SIMPLE, t, eq_ref, PRIMARY, PRIMARY, 4, trych_default.pt.tag_id, 1,
クエリまたは多分私の問題へのよりよい解決策を改善するためにどのような方法があるかどうか、私は疑問に思います。ありがとう!
私が実際にインデックスがありませんでした!それはそんなに愚かな間違いです...しかしMatthewに感謝します!どうもありがとうございました! –
問題ありません、喜んで助けてください! –