【发布时间】:2010-12-07 18:18:32
【问题描述】:
我有以下内容,当我自己运行时非常快,但是当我为许多 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;
【问题讨论】:
标签: php mysql optimization