によって、でグループと秩序をMySQLのクエリの最適化:私はこのクエリは、私が最適化する必要があることを私が書いていない
SELECT DISTINCT r.itemid
, r.catid
, i.title
, i.owner
, i.image
, i.background
, i.icon
FROM jos_sobi2_cat_items_relations r
LEFT
JOIN jos_sobi2_item i
ON i.itemid = r.itemid
WHERE
(i.published = 1
AND r.catid > 1
AND (i.publish_down > '2016-10-26 13:08:02'
OR i.publish_down = '0000-00-00 00:00:00'
)
AND i.itemid IN (SELECT itemid
FROM jos_sobi2_item
WHERE (published = 1
AND (publish_down > '2016-10-26 13:08:02'
OR publish_down = '0000-00-00 00:00:00'
)
)
)
)
GROUP
BY i.itemid
ORDER
BY i.publish_up DESC
LIMIT 0,14
この説明mysqlコマンドです:
は、"items"テーブルには、itemidフィールドのプライマリキーだけがあります。 「関係」の表では、これら3つの指標持っている:
- catid,itemid PRIMARY BTREE
- itemid BTREE
- catid BTREE
を私はBY句DISTINCTまたはGROUPを削除する場合は、クエリが高速であることを見た、それ以外の場合は、実行されるように1分以上かかります。
私が最初に考えたのは、GROUP BY句がすでにジョブを実行しているため、DISTINCT句を削除することでした。しかし、私は確信していません。
どのように最適化するのに役立ちますか?
ありがとうございました。
このクエリは、非集計カラムを選択しているため、MySQLの一部のバージョンを含む他のデータベースでも実行されません。 –
http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-クエリ – Strawberry
残念なことに、私が援助を依頼した理由は私には書かれていません –