-2
SELECT *, SUM(real_premier_num) AS real_premier_num, SUM(premier_num) AS premier_num,
GROUP_CONCAT(tg_time SEPARATOR '-') AS post_time, GROUP_CONCAT(low_price SEPARATOR '-')
AS low_price FROM `port_wbinfo` WHERE `city_id` = 12 AND `is_tg` = 0 GROUP BY
`hz_post_id` ORDER BY `off_time` DESC, `shelf_time` DESC, `id` DESC LIMIT 10
私は以下のようなインデックスを作成しましたが、動作しません。グループ化する必要があります。意味をなさないGROUP BY
で私は以下のSQLを持って、私は最適化する方法を知らない?
SELECT hz_post_id, SUM(real_premier_num) AS real_premier_num,
SUM(premier_num) AS premier_num,
GROUP_CONCAT(tg_time SEPARATOR '-') AS post_time,
GROUP_CONCAT(low_price SEPARATOR '-') AS low_price
FROM port_info pi
WHERE city_id = 12
GROUP BY hz_post_id
ORDER BY MAX(id) DESC;
SELECT *
:
alter table port_wbinfo add index `city_tg` (`city_id`,`is_tg`);
Wyはあなたが 'GROUP BY'で' SELECT * 'を使っていますか?それは単に正しくありません。 –
クエリが技術的に無効です。なぜなら、あなたは 'GROUP BY'(おそらく下位票のソース)で' SELECT * 'を実行しているからです。つまり、インデックスがすべてのレコードにタッチする必要がある 'SUM'を使用しているので、' GROUP BY'演算に役立つかどうかはわかりません。しかし、WHERE句とORDER BY句に含まれるカラムにインデックスを追加することができます。 –
_「動作しません」_は問題の説明ではありません。何故なの?そして、なぜ最適化が心配ですか?あなたはそれが潜在的に遂行していることを証明しましたか?それはどのくらいかかりますか?そしてそれはどれくらい遅いですか? –