私は例えば自分自身で実行すると、多くのentity_id
クエリは時間がかかり始めると長いため、私はこれを行っておりますときに、非常に速いですが、以下の(ループは、PHPのforeachである)このクエリを持っていますループ内の別のエンティティで同じクエリを実行すると最大2.1秒かかります。クエリはループ内に置かれるエンティティの方が遅くなり、処理速度が遅くなるようです。どうしてこれなの?どのようにクエリを改善/最適化できますか?mysqlのクエリ速度最適化
foreach($entity_ids as $entity_id) {
SELECT COUNT(*) as prev, DATE_FORMAT(`created`, '%Y%m%d') AS date_group
FROM articles_entities
WHERE entity_id = '$entity_id'
AND `created` >= DATE_SUB(CURDATE(), INTERVAL 10 DAY)
GROUP BY date_group
// store result
}
私は、次の表の構造を持っている:
CREATE TABLE `articles_entities` (
`id` CHAR(36) NOT NULL,
`article_id` CHAR(36) NOT NULL,
`entity_id` CHAR(36) NOT NULL,
`created` DATETIME DEFAULT NULL,
`modified` DATETIME DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `article_id` (`article_id`),
KEY `entity_id` (`entity_id`),
KEY `created` (`created`)
) ENGINE=MYISAM DEFAULT CHARSET=utf8;
答えに欠けているものは、entity_idをalt_entity_idとして選択していましたが、どちらのエンティティを選ぶことができましたか(誤った結果を与えたのでentity_idだけを選択できませんでした。私もグループ分けを交換しなければなりません。あなたの答えを更新するなら、私はそれを受け入れます。 – Lizard
うれしいことですが、私は更新しましたd :) – SW4