こんにちは、クエリの最適化戦略に特化したトピックがたくさんあることは知っていますが、これは非常に具体的であるため、インターネット上のどこにも答えが見つかりませんでした。
eshop に大きな製品テーブル (約 180k 行) があり、テーブルには 65 列あります。ええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええ
まだクエリに多くの列を考慮していませんが、選択はまだかなりトリッキーです。考慮し、比較する必要がある多くの条件があります。以下のクエリ
SELECT *
FROM products
WHERE production = 1
AND publish_on < '2012-10-23 11:10:06'
AND publish_off > '2012-10-23 11:10:06'
AND price_vat > '0.5'
AND ean <> ''
AND publisher LIKE '%Johnny Cash%'
ORDER BY bought DESC, datec DESC, quantity_storage1 DESC, quantity_storege2 DESC, quantity_storage3 DESC
LIMIT 0, 20
私はすでにwhere句の列にインデックスを1つずつ配置しようとしましたが、order by句でも、複合インデックスを作成しようとしました(production、publish_on、publish_off、price_vat、ean)。
クエリはまだ遅く (数秒) あり、eshop ソリューションと、結果がすぐに得られないために人々が去っていくので、高速である必要があります。そして、ページングを行うために、見つかったすべての行の検索を実行するのに必要な時間をまだ数えていません。
つまり、迅速にする最善の方法はクエリを単純化することですが、この場合、すべての条件と並べ替えが必須です。
誰でもこの種の問題を解決できますか? この種のクエリを高速化することは可能ですか、またはたとえばクエリを単純化し、残りをphpエンジンに残して結果をソートする方法は他にあります..
ああ、私はこれについて本当に無知です..あなたの知恵を共有してください.
よろしくお願いします