मेरे पास निम्न है जो अपने आप चलाते समय बहुत तेज़ है, लेकिन जब मैं इसे कई entity_id
के लिए कर रहा हूं, तो क्वेरी लंबे और लंबे समय तक लगने लगती हैं (लूप एक PHP foreach है) उदाहरण के लिए यह क्वेरी केवल 0.078 लेता है लेकिन लूप के भीतर एक अलग इकाई पर एक ही क्वेरी 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 AS alt_entity_id के रूप में मैं काम कर सकता था कि प्रत्येक इकाई कौन सा इकाई थी (ध्यान दें कि मैं केवल entity_id का चयन नहीं कर सकता क्योंकि यह गलत परिणाम देता है। (मुझे समूह को स्वैप करना होगा। अगर आप अपना जवाब अपडेट करते हैं तो मैं इसे स्वीकार करूंगा। – Lizard
खुशी है कि यह मदद मिली है, मैंने अपडेट किया है डी :) – SW4