को गति देने का कोई भी तरीका मेरे पास 2 टेबल हैं। 1 संगीत है और 2 सुनोट्रैक है। सुनोट्रैक प्रत्येक गीत के अद्वितीय नाटकों को ट्रैक करता है। मैं महीने के लोकप्रिय गाने के परिणाम प्राप्त करने की कोशिश कर रहा हूं। मुझे अपने परिणाम मिल रहे हैं लेकिन वे बहुत अधिक समय ले रहे हैं। नीचे अपनी तालिका और क्वेरीMySQL धीमे होने पर धीमा।
430,000 पंक्तियों
CREATE TABLE `listentrack` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`sessionId` varchar(50) NOT NULL,
`url` varchar(50) NOT NULL,
`date_created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`ip` varchar(150) NOT NULL,
`user_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=731306 DEFAULT CHARSET=utf8
12500 पंक्तियों
CREATE TABLE `music` (
`music_id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`title` varchar(50) DEFAULT NULL,
`artist` varchar(50) DEFAULT NULL,
`description` varchar(255) DEFAULT NULL,
`genre` int(4) DEFAULT NULL,
`file` varchar(255) NOT NULL,
`url` varchar(50) NOT NULL,
`allow_download` int(2) NOT NULL DEFAULT '1',
`plays` bigint(20) NOT NULL,
`downloads` bigint(20) NOT NULL,
`faved` bigint(20) NOT NULL,
`dateadded` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`music_id`)
) ENGINE=MyISAM AUTO_INCREMENT=15146 DEFAULT CHARSET=utf8
SELECT COUNT(listenTrack.url) AS total, listenTrack.url
FROM listenTrack
LEFT JOIN music ON music.url = listenTrack.url
WHERE DATEDIFF(DATE(date_created),'2009-08-15') = 0
GROUP BY listenTrack.url
ORDER BY total DESC
LIMIT 0,10
इस क्वेरी बहुत जटिल नहीं है और पंक्तियों बहुत बड़ी नहीं कर रहे हैं, मुझे नहीं लगता है।
क्या इसे गति देने का कोई तरीका है? या आप एक बेहतर समाधान का सुझाव दे सकते हैं? यह हर महीने की भिखारी पर एक क्रॉन नौकरी होने जा रहा है, लेकिन मैं दिन के परिणामों के साथ भी करना चाहूंगा।
ओह btw मैं इस स्थानीय रूप से चला रहा हूँ, 4 मिनट चलाने के लिए, लेकिन prod पर ले जाता है लगभग 45 सेकेंड
मेरा मानना है कि इंडेक्स तालिका के नाम फ़्लिप किए गए हैं। मैं पहली बार ऐसा करने के लिए उलझ गया और पोस्ट करने से पहले इसे पकड़ा। – TheJacobTaylor
TheJacobTaylor सही था, मेरे पास टेबल नाम पीछे थे। मैंने इसे ठीक कर दिया है। –
मेरे पास सवाल है, हम दोनों ने उन्हें पीछे क्यों लाया? मैंने फिर से पोस्ट को देखा, लेकिन मैंने ट्रिगर को नहीं देखा जो मैंने गलत किया। – TheJacobTaylor