我有以下代码,单独运行非常快,但是当我对许多
entity_id
执行此操作时,查询开始变得越来越慢(循环是PHP foreach)。例如,此查询仅需要0.078秒,但在循环中的不同实体上执行相同的查询需要长达2.1秒。 查询似乎随着我放入循环中的实体越来越多而变得越来越慢。为什么?如何改进/优化查询?
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;